我有一个控制器,它接受以下两种格式的 URL:
-
网络/添加或编辑-> 在页面上呈现空白表单以添加新的网络对象
-
网络/AddOrEdit/[id]-> 使用预填充表单呈现页面以编辑网络对象
带有 ID [id]
显然,每个实例中都使用相同的视图 - 我的设计目标之一是使用相同的视图来添加和编辑目的。
母版页包含一个指向添加页面的链接,如下所示:
@Html.ActionLink("Add", "AddOrEdit", "Network")
通常这会正确呈现为/Network/AddOrEdit
.
但是,当我在编辑页面时(即当前 URL 的格式为Network/AddOrEdit/[id]
),然后“添加”链接将在末尾显示该 ID - 因此“添加”链接实际上指向编辑页面。这不是我想要的!
因此,出于某种原因,MVC 似乎允许查询字符串中的当前 ID 干扰 ActionLink 的呈现。
有什么建议我可以对此做些什么吗? :(
你的猜测是对的。 MVC路由机制可以重用当前请求中的路由变量来生成传出路由数据。这就是为什么id
参数由当前请求填充。您应该明确指定id
生成链接时
@Html.ActionLink("Add", "AddOrEdit", "Network", new { id = String.Empty }, null)
当路由系统看到带有可选的路由时id
参数和路由值string.Empty
,它生成链接而无需id
到底
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)