0

在我的 StudenntController 我有一个方法

public ActionResult ClassStudents(int? classRoomId)
{   
    var students = st.GetAll().Where(s => s.ClassRoomID == classRoomId);

    ViewBag.ClassRoomTitle = clr.GetAll().Where(c=>c.ClassRoomID == classRoomId).Single().ClassRoomTitle;

    return View(students);
}

当我输入 localhostxxxx/Student/ClassStudent/1 时,参数 classRoomId 为 null 并且出现错误:Sequence contains no elements 我想知道为什么 url:"{controller}/{action}/{id}" 不传递参数?

4

2 回答 2

2

您可以在路由中设置 id 参数。

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Student", action = "ClassStudents", id = UrlParameter.Optional } 
            );

参数应该匹配路由值

public ActionResult ClassStudents(int id)
{
     // Your code here

}
于 2013-04-28T02:29:36.907 回答
1

为了使路由工作,参数必须命名为id。在您的代码中,参数名为classRoomId. 将您的方法签名更改为:

public ActionResult ClassStudents(int? id)
{
     // Your code here
}

如果你真的想命名参数,classRoomID那么你需要创建一个自定义路由。

于 2013-04-28T02:31:06.617 回答