用于服务路由的ASP.NET MVC表单操作

时间:2011-10-27 18:26:57

标签: asp.net-mvc asp.net-mvc-routing

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

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

奖励积分:这里到底发生了什么?

1 个答案:

答案 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