html.actionlink 没有将参数传递给控制器动作
Posted
技术标签:
【中文标题】html.actionlink 没有将参数传递给控制器动作【英文标题】:html.actionlink doesn't passing parameter to controller action 【发布时间】:2011-02-18 15:43:06 【问题描述】:我在将参数传递给控制器动作时遇到问题,我做了以下操作
Url.Action("SchoolDetails","School",newid=item.SchoolId)我的控制器操作如下
public ActionResult SchoolDetails(string schoolId,_ASI_School schoolDetail) schoolDetail = SchoolRepository.GetSchoolById(schoolId); 返回视图(学校详情);我不知道为什么上面的 schoolId 正在变为 null..
【问题讨论】:
【参考方案1】:您的参数在Url.Action
方法调用中被命名为id
,而不是schoolId
。 html 中的参数名称、控制器操作中的参数名称和路由定义中的参数名称必须匹配。此外,您的路线中必须有此参数。例如,如果您使用默认路由 a.k.a
Controller/Action/id
,将操作中的参数重命名为 id。如果在您的路由中找不到该参数,它将被移至查询字符串参数,您可以在操作中使用Request.QueryString["id"]
访问它。
【讨论】:
【参考方案2】:您必须在Global.asax
中定义您的默认路由到:
routes.MapRoute(
"Default",
"Home",
new Controller = "Home", action = "Index", schoolId = UrlParameter.Optional
并将您的 Action
更改为 Url.Action("SchoolDetails","School",newschoolId =item.SchoolId)
。
【讨论】:
以上是关于html.actionlink 没有将参数传递给控制器动作的主要内容,如果未能解决你的问题,请参考以下文章