Asp.net mvc asp.net mvc-ActionLink的呈现不一致
我有一个控制器,它接受以下两种格式的URL:Asp.net mvc asp.net mvc-ActionLink的呈现不一致,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc Routing,我有一个控制器,它接受以下两种格式的URL: 网络/AddOrEdit->在页面上呈现空白表单以添加新的网络对象 Network/AddOrEdit/[id]->呈现带有预填充表单的页面以编辑网络对象 带ID[ID] 显然,每个实例中使用的都是相同的视图——我的设计目标之一是使用相同的视图进行添加和编辑 母版页包含指向添加页的链接,如下所示: @Html.ActionLink("Add", "AddOrEdit", "Network") 通常,这会正确呈现为/Network/AddOrEd
- 网络/AddOrEdit->在页面上呈现空白表单以添加新的网络对象
- Network/AddOrEdit/[id]->呈现带有预填充表单的页面以编辑网络对象 带ID[ID]
@Html.ActionLink("Add", "AddOrEdit", "Network")
通常,这会正确呈现为/Network/AddOrEdit
但是,当我在编辑页面上时(即当前URL的格式为Network/AddOrEdit/[id]
),添加链接会在最后显示该id,因此添加链接实际上指向编辑页面。这不是我想要的
因此,出于某种原因,MVC似乎允许查询字符串中的当前ID干扰ActionLink的呈现
有什么建议吗?我能做什么(我自己也尝试过:
@Html.ActionLink("Add", "AddOrEdit", "Network", new { id = UrlParameter.Optional })
显然,这个也能用
@Html.ActionLink("Add", "AddOrEdit", "Network", new { id = String.Empty })
希望这对您也有用。您的猜测是对的。MVC路由机制可能会重用当前请求中的路由变量来生成传出路由数据。这就是为什么从当前请求填充
id
参数的原因。在生成链接时,您应该明确指定id
@Html.ActionLink("Add", "AddOrEdit", "Network", new { id = String.Empty }, null)
当路由系统看到带有可选
id
参数的路由,以及带有string.Empty
的路由值时,它会生成最后没有id
的链接谢谢,但我认为你还没有理解这个问题。我希望链接在最后没有id的情况下呈现。谢谢你回来看这个Daryl,但这不起作用k、 奇怪的是,它只是将文本“Length=7”附加到查询字符串的末尾。这些非常重要的空值之一。我想这个问题以前已经被问过了,所以:这解决了问题。我想我只是不太了解ActionLink重载!