在我的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}”不传递参数?
答案 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
命名,则需要创建自定义路线。