【发布时间】:2012-01-08 15:42:30
【问题描述】:
这是你肯定知道的默认路由:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Start", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
假设我像这样使用 BeginForm() 方法:
@using (Html.BeginForm("MyAction", "MyController", new { id = 4 }))
这将呈现以下表单标签:
<form method="post" action="/MyController/MyAction/4">
现在,假设我创建了一条自定义路线:
routes.MapRoute(
"MyCustomRoute", // Route name
"MyController/{id}/{action}", // URL with parameters
new { controller = "MyController", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
当我创建一个表单时,我希望它看起来像这样:
<form method="post" action="/MyController/4/MyAction">
但是,如果我像上面的示例一样使用 BeginForm(),我将得到一个与默认路由匹配的 url。 有没有办法告诉 BeginForm() 在为操作创建 url 时使用我的自定义路由而不是默认路由? 或者 BeginForm() 是否总是生成遵循默认路由模式的 url?
如果重要的话,我正在使用 asp.net mvc 3。
【问题讨论】: