我有一个接受以下两种格式的网址的控制器:
显然,每个实例都使用相同的视图 - 我的设计目标之一是使用相同的视图进行添加和编辑。
母版页包含添加页面的链接,如下所示:
@Html.ActionLink("Add", "AddOrEdit", "Network")
通常这会正确呈现为/Network/AddOrEdit
。
但是,当我在编辑页面上时(即当前URL的格式为Network/AddOrEdit/[id]
),则添加链接会在末尾呈现该ID,因此添加链接实际指向编辑页面。这不是我想要的!
因此,出于某种原因,MVC似乎允许查询字符串中的当前ID干扰ActionLink的呈现。
有什么建议我可以做些什么吗? :(
答案 0 :(得分:4)
你的猜测是正确的。 MVC路由机制可以重用来自当前请求的路由变量来生成传出路由数据。这就是从当前请求填充id
参数的原因。生成链接
id
@Html.ActionLink("Add", "AddOrEdit", "Network", new { id = String.Empty }, null)
当路由系统看到带有可选id
参数的路由,路由值为string.Empty
时,它会生成最后没有id
的链接
答案 1 :(得分:2)
自己试了一下:
@Html.ActionLink("Add", "AddOrEdit", "Network", new { id = UrlParameter.Optional })
显然,这个也有效。
@Html.ActionLink("Add", "AddOrEdit", "Network", new { id = String.Empty })
希望这也适合你。