2013-04-28 57 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那麼你就需要創建一個自定義路線。