route config无法正常工作

时间:2017-07-16 06:01:33

标签: c# asp.net-mvc asp.net-mvc-4 url-routing asp.net-mvc-routing

我是asp.net mvc的新手,并且遇到路由问题。 我正在尝试修改以下网址 -

localhost:2124/Teum/ClosedEvents

进入

localhost:2124/Teum/history

使用路由

routes.MapRoute(
    name: "history",
    url: "{controller}/{action}",
    defaults: new { controller = "Teum", action = "ClosedEvents", id = UrlParameter.Optional }
);

我在这里看到一个使用Web.config的解决方案并添加到它

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="UrlRoutingModule"/>
      <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </modules>
    <handlers>
      <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral,  PublicKeyToken=b03f5f7f11d50a3a"/>
    </handlers>
  </system.webServer>

但它仍然无法正常工作,无论哪种方式我都会收到404错误。

会感激任何帮助。

2 个答案:

答案 0 :(得分:3)

To&#34; rename&#34;对ClosedEvents的{​​{1}}操作,您需要设置history网址细分。

{action}

您不一定需要将routes.MapRoute( name: "history", url: "Teum/History", defaults: new { controller = "Teum", action = "ClosedEvents" } ); 放入参数中,但如果您的目标是在多个不同的控制器上重命名此操作,则可能会有所帮助。您也可能不需要可选的{controller}参数,但如果您需要,可以添加它。

{id}

如果你想要&#34;历史&#34;要小写,你应该使用

routes.MapRoute(
    name: "history",
    url: "Teum/History/{id}",
    defaults: new { controller = "Teum", action = "ClosedEvents", id = UrlParameter.Optional }
);

位于routes.LowercaseUrls = true; 方法的顶部。否则,区分大小写在路由配置中并不重要。

答案 1 :(得分:0)

你的胭脂应该是这样的:

首先,您必须添加IgnoreRoute:

     Iterator<Model> dataItems = service.getItems(SOMERequestBuilderObj);


 I am trying to add a custom header like this -

以及您的 Global.asax 文件:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");


    routes.MapRoute("history", "{controller}/{action}/{id}",
                     new { controller = "Teum", action = "ClosedEvents", id = UrlParameter.Optional }
                );
 }

如果您的Controller操作中有多个参数,则路由应为:

protected void Application_Start() 
{ 

RouteConfig.RegisterRoutes(RouteTable.Routes);
}

干杯!!