2013-04-28 55 views
0

在我StudenntController我hvae的方法“{控制器}/{行动}/{ID}” 没有通过参数

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 /学生/ ClassStudent/1 参数classRoomId是空,我得到一个错误:序列不包含任何元素 我想知道为什么网址:“{控制器}/{行动}/{id}”不通过参数?

+0

你是如何配置路由表的? – tia 2013-04-28 02:32:17

+0

你能提供你的路由配置代码吗?如果你使用默认配置,那么参数必须是id而不是classRoomId – 2013-04-28 02:48:34

回答

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 

} 
1

为了让上班路线,参数必须命名为id。在您的代码中,该参数名为classRoomId。你的方法签名更改为:

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

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