2011-10-27 23 views
-1

我正在开发一个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',这是完全错误的。

所以我的问题是:如何在不破坏所有现有表单的情况下路由新服务?

对于奖励积分:这里发生了什么?

+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

+0

代码示例中的路由不起作用。但是,您链接的动态服务路线完成了这一诀窍。谢谢! –