0

私はasp.net mvcで新しく、ルーティングに問題があります。 私は、次のURLを変更しようとしている -route config not working

localhost:2124/Teum/history 

localhost:2124/Teum/ClosedEvents 

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

actionResultはClosedEventsですが、履歴としてURLに表示したいのですが –

答えて

0

あなたrougingは次のようにする必要があります:

まずあなたが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); 
} 

の場合コントローラアクションに複数のパラメータがありますルーティングは次のようにする必要があります。

//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

デフォルトのページにしたいのですが、名前を表示するだけでアクション名には名前を変えたいと思っていますが、それを適用する。公共の静的な無効RegisterRoutes(RouteCollectionルート) { ルート:何のidはあなたがこれを持って行動 –

+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; 

を使用する必要があります。それ以外の場合、ルーティング設定では大文字と小文字の区別は関係ありません。