我遇到过关于Html.Actionlink的MVC 5似乎不一致的问题。在不同的cshtml文件中,我可以使用相同的代码,但生成的url目标是不同的。
例如,这行代码:
<td>@Html.ActionLink(item.Description, "Edit", new { item.ParentTableID }) </td>
生成此网址
localhost\MyControllerClass\Edit?ParentTableID=35
然后正确调用ActionView方法编辑并按预期将参数提供给35。
但是,在另一个cshtml文件中,这一行
<td>@Html.ActionLink("Edit", "EditChild", new { id = f.ApplicationTableFieldID})</td>
生成此网址
localhost/MyControllerClass/Edit/7
当它到达EditChild Action View时,参数为null。
我现在已经看过几次这样的事了,还没有能够理解是什么造成了不同。但我需要第一个结果。
感谢。
答案 0 :(得分:1)
确保在Action方法和ActionLink Html帮助程序中正确命名了ID参数。视觉差异来自MVC 默认路由以及它如何获取名为ID
的参数并将其放在没有查询字符串的URL中(?后跟东西)
如果您的操作方法如下所示
public ActionResult EditChild(int ParentTableID){}
然后,当您将URL传递回URL
时,您需要将您的ID参数命名为ParentTableID<td>@Html.ActionLink("Edit", "EditChild", new { ParentTableID = f.ApplicationTableFieldID})</td>
现在应该生成以下网址
localhost\MyControllerClass\EditChild?ParentTableID=3