路由配置不工作
我是新的与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