我正在开发一个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'
,这是完全错误的。
所以我的问题是:如何在不破坏所有现有表格的情况下路由新服务?
奖励积分:这里到底发生了什么?
答案 0 :(得分:0)
尝试使用如下,
//New rule
RouteTable.Routes.Add(
new ServiceRoute(
"UserWebservice", 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
);
我认为将路由添加代码更改为Reference链接应该有效。 另请查看此博客以创建Dynamic service routes。