0

我是新的與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錯誤。

將不勝感激任何形式的幫助。

+0

actionResult是ClosedEvents,但我希望它顯示在URL作爲歷史 –

回答

0

你抹紅應該是這樣的:

首先,你必須添加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 
); 

乾杯!

+0

我不希望它成爲默認頁面,只想要重命名它在顯示,但不是在行動的名稱,我明白這是可能的但不知道如何應用它。 –

+0

更改默認名稱爲「歷史」 –

+0

我做到了,再來看看關於這個問題 –

2

要將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; 

。否則,在路由配置中區分大小寫並不重要。