the*_*cko 3 asp.net-mvc routing html.beginform
使用MVC,我在视图中有一个html表单助手:
using (Html.BeginForm("ActionOne", "ControllerOne")) ...
Run Code Online (Sandbox Code Playgroud)
使用默认路由,action属性的输出符合预期:
<form action="/ControllerOne/ActionOne" ...
Run Code Online (Sandbox Code Playgroud)
但注册一条似乎没有匹配的新路线会影响输出.
路由代码:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.Add("testRoute", new Route("MyUrl", new MvcRouteHandler()));
routes.MapRoute("Default", "{controller}/{action}", new { controller = "Home", action = "Index"});
}
Run Code Online (Sandbox Code Playgroud)
输出:
<form action="/MyUrl?action=ActionOne&controller=ControllerOne"
Run Code Online (Sandbox Code Playgroud)
这是设计还是我在做一些基本的东西?
干杯!
我遇到了这个确切的问题.我不确定为什么System.Web.Mvc.HtmlHelper似乎只是在路由表中使用第一个非忽略路由来生成链接等,但我找到了"BeginForm"问题的解决方法.
如果您在Global.asax.cs中命名了"默认"路由,例如:
routes.MapRoute("Default", "{controller}/{action}", new {controller = "Home", action = "Index" });
Run Code Online (Sandbox Code Playgroud)
然后你可以使用Html.BeginFormRoute方法并调用"默认"MVC路由的名称,然后具体命名控制器和操作,从而得到正确的url:
using (Html.BeginRouteForm("Default", new { controller="YourController", action = "YourFormAction" })) { }
Run Code Online (Sandbox Code Playgroud)
HTH
| 归档时间: |
|
| 查看次数: |
8072 次 |
| 最近记录: |