【问题标题】:ASP.NET MVC form actions for Service Routes服务路由的 ASP.NET MVC 表单操作
【发布时间】:2011-10-27 18:26:57
【问题描述】:

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

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

对于奖励积分:这到底是怎么回事?

【问题讨论】:

  • 您是否尝试过更改映射的顺序,将默认设置置于服务一之上。

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


【解决方案1】:

尝试如下使用,

//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
  );

我认为将 route add 的代码更改为 Reference 链接应该可行。 另请查看此博客以创建 Dynamic service routes

【讨论】:

  • 代码示例中的路由不起作用。但是,您链接到的动态服务路由起到了作用。谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多