html.actionlink不会将参数传递给控制器​​操作

时间:2010-05-12 14:02:07

标签: asp.net asp.net-mvc

在将参数传递给控制器​​操作时遇到问题,我已完成以下操作


    Url.Action("SchoolDetails","School",new{id=item.SchoolId})

我的控制器操作如下


    public ActionResult SchoolDetails(string schoolId,_ASI_School schoolDetail)
    {
            schoolDetail = SchoolRepository.GetSchoolById(schoolId);
            return View(schoolDetail);
    }

我不知道为什么上面的学校会变得无效......

2 个答案:

答案 0 :(得分:3)

您的参数在id方法调用中名为schoolId,而不是Url.Action。 html中的参数名称,控制器的操作和路径定义中的参数名称必须匹配。此外,您必须在路线中使用此参数。例如,如果您使用默认路由a.k.a Controller/Action/{id},将操作中的参数重命名为id。如果在您的路线中找不到参数,则会将其移至查询字符串参数,您可以在Request.QueryString["id"]的操作中访问该参数。

答案 1 :(得分:2)

您必须在Global.asax中将默认路线定义为:

routes.MapRoute(
         "Default",
         "Home",
         new { Controller = "Home", action = "Index", schoolId = UrlParameter.Optional }

并将您的Action更改为Url.Action("SchoolDetails","School",new{schoolId =item.SchoolId})