“{controller} / {action} / {id}”不传递参数

时间:2013-04-28 02:23:34

标签: asp.net-mvc

在我的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不包含任何元素 我想知道为什么url:“{controller} / {action} / {id}”不传递参数?

2 个答案:

答案 0 :(得分:2)

您可以在路由中设置id参数。 参数应与路线值匹配

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

答案 1 :(得分:1)

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

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

如果您确实要为参数classRoomID命名,则需要创建自定义路线。