我是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错误。
会感激任何帮助。
答案 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);
}
干杯!!