我正在开发一个ASP.NET MVC应用程序。我一直在使用默认的路由规则。我有一些使用这样的代码呈现表单的观点:服务路径的ASP.NET MVC表单操作
@using (Html.BeginForm("ForgotPassword", "Register", FormMethod.Post))
这一直工作正常。表单操作会发布到/myapp/register/forgotpassword
,并且一切正常。
现在需要将一些服务端点添加到同一个应用程序中。所以我在默认路线上添加了一些新路线。路由设置现在看起来像:
//New rule
RouteTable.Routes.Add(
new ServiceRoute(
"api/user", new MyCustomerServiceHostFactory(),
typeof(UserWebservice)));
//Default rule
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
在我添加新规则后,我的所有表格都打破了。检查HTML,我可以看到表单操作是/myapp/api/user?action=ForgotPassword&controller=Register'
,这是完全错误的。
所以我的问题是:如何在不破坏所有现有表单的情况下路由新服务?
对于奖励积分:这里发生了什么?
您是否尝试更改映射的顺序,将默认值设置为高于服务的顺序。 –