路由配置不工作

我是新的与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; 

。否则,在路由配置中区分大小写并不重要。

以上是 路由配置不工作 的全部内容, 来源链接: utcz.com/qa/265163.html

回到顶部