路由配置不工作
我是新的与asp.net mvc和路由问题。 我试图修改以下网址 - 通过使用路由作为路由配置不工作
routes.MapRoute(
name: "history",
url: "{controller}/{action}",
defaults: new { controller = "Teum", action = "ClosedEvents", id = UrlParameter.Optional }
);
我在这里看到一个解决方案与Web.config中
localhost:2124/Teum/ClosedEvents
到
localhost:2124/Teum/history
,并添加到它
<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错误。
将不胜感激任何形式的帮助。
你抹红应该是这样的:
首先,你必须添加IgnoreRoute:
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 }
);
}
和你的Global.asax文件:
protected void Application_Start()
{
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
如果你的Controller动作中有多个参数那么路由应该是:
//Action With Parameter
public ActionResult ClosedEvents(string searchBy, string search, int page = 1, int pageSize = 20, bool falsPositive = false)
{
}
//And your routing should be :
routes.MapRoute(
"history", // Route name
"{controller}/{action}/{searchBy}/{search}/{page}/{pageSize}/{falsPositive}", // URL with parameters
new { controller = "Teum", action = "ClosedEvents", searchBy = "", search = "",page="",pageSize="",falsPositive="" } // Parameter defaults
);
干杯!
我不希望它成为默认页面,只想要重命名它在显示,但不是在行动的名称,我明白这是可能的但不知道如何应用它。 –
更改默认名称为“历史” –
我做到了,再来看看关于这个问题 –
要将ClosedEvents
操作“重命名”为history
,您需要制作{action}
URL段文字。
routes.MapRoute(
name: "history",
url: "Teum/History",
defaults: new { controller = "Teum", action = "ClosedEvents" }
);
你不一定需要作出{controller}
成参数,但可能会有所帮助,如果你的目标是要重命名几个不同的控制器此操作。您也可能不需要可选的{id}
参数,但是如果您想要的话,这是如何添加它的。
routes.MapRoute(
name: "history",
url: "Teum/History/{id}",
defaults: new { controller = "Teum", action = "ClosedEvents", id = UrlParameter.Optional }
);
如果你想 “历史” 是小写的,你应该在你的RouteConfig.RegisterRoutes()
方法的顶部使用
routes.LowercaseUrls = true;
。否则,在路由配置中区分大小写并不重要。
actionResult是ClosedEvents,但我希望它显示在URL作为历史 –