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,而不是schoolIdhtml 中的参数名称、控制器操作中的参数名称和路由定义中的参数名称必须匹配。此外,您的路线中必须有此参数。例如,如果您使用默认路由 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 没有将参数传递给控制器​​动作的主要内容,如果未能解决你的问题,请参考以下文章

将 DataFrame 切片作为参数传递给没有“SettingWithCopyWarning”的函数

有没有办法将多个参数传递给jquery函数[重复]

从后面的代码将参数传递给 URL

有没有办法将参数传递给Runnable? [复制]

有没有办法避免将所有参数传递给函数[重复]

如何将参数传递给进程