Asp.net mvc 在ASP.NET MVC中使用Form.Begin中的命名路由

Asp.net mvc 在ASP.NET MVC中使用Form.Begin中的命名路由,asp.net-mvc,routing,Asp.net Mvc,Routing,在使用Form.Begin时,是否有办法强制使用ASP.NET MVC中的命名路由。我越来越了解路由,并且害怕如果你只是改变顺序或者参数是否有默认值,路由会变得非常脆弱 <% Form.Begin(...) %> <!-- no overload for providing a route name --%> 如果需要生成命名路由的URL,可以使用URL.RouteUrl(),只需将控制器和操作放入route values对象,如下所示: <%= Url.Rou

在使用Form.Begin时,是否有办法强制使用ASP.NET MVC中的命名路由。我越来越了解路由,并且害怕如果你只是改变顺序或者参数是否有默认值,路由会变得非常脆弱

<% Form.Begin(...) %> <!-- no overload for providing a route name --%> 

如果需要生成命名路由的URL,可以使用
URL.RouteUrl()
,只需将控制器和操作放入route values对象,如下所示:

<%= Url.RouteUrl("NamedRoute", new { controller="Controller", action="Action", foo="Bar" ... }) %>
第一个和第三个签名相同,因此它们无效

如果需要经常使用命名路由,您可以创建自己的表单帮助器作为HtmlHelper的扩展方法

action="<%= Ajax.RouteLink("Update Status", "product-route-short", new { action = "GetStatus", sku = "" }, new AjaxOptions { UpdateTargetId = "status" })%>"
<%= Url.RouteUrl("NamedRoute", new { controller="Controller", action="Action", foo="Bar" ... }) %>
public string BeginForm(string actionName, string controllerName)
public string BeginForm(string actionName)
public string BeginForm(string routeName, string actionName) // Uh oh!