2017-07-13 3 views
-1

私はASP.NET MVC5プロジェクトを持っている、との見解では、私はこのようなリンクを持っている...ルートを作成するとURLが変わるのはなぜですか?

<a href="@Url.Action("Partner", "Home", new {id = Model.PartnerID})"> 
    ...loads of markup here... 
</a> 

これは正常に動作し、/Home/Partner/100

しかし私にフォームのURLを与えます私はアクションのルート...

routes.MapRoute("Partner", "Partner", new { controller = "Home", action = "Partner" }); 

を追加する場合/Partner?id=100

であるため、...その後、URLがレンダリングされます/Partner/100の形式のURLを取得する方法はありますか?

+0

問題を解決しましたか? – hasan

答えて

0

次のように目的のマップルートを作成できます。

routes.MapRoute(
     name: "Partner", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Partner", id = UrlParameter.Optional } 
); 
+0

これを答えとしてマークすると、ちょうど@StephenMueckeに勝つように見えます。 –

1

あなたのルート定義には、idのセグメントが含まれている必要があります。

routes.MapRoute(
    name: "Partner", 
    url: "Partner/{id}", 
    defaults: { controller = "Home", action = "Partner" } 
); 
+0

答えに感謝します。私は@ hsnblの答えをあなたの前に来たように解答しましたが、どちらも同じですが –

+0

真剣に?あなたは私の答えがする「../ Partner/100」を生成する方法を尋ねました。そして、あなたが答えないものを受け入れます。 –

+0

それは私のためにしました。それがうまくいかなかったら、それを答えとして受け入れなかったでしょう。 –

-1

あなたは以下のようにGlobal.asax.csにエントリを置くことができます。

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 


    routes.MapRoute(
     name: "customroute1", 
     url: "{controller}/{action}/{id}", 
     defaults: new 
     { 
      controller = "Home", 
      action = "partner", 
      id = UrlParameter.Optional 
     } 
    ); 



routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { 
     controller = "Home", 
     action = "Index", 
     id = UrlParameter.Optional } 
); 

}

注:順序はあなたがglobal.ascxファイル内のコードを配置しますはとても重要です。

Additional Official Info:

新しいASP.NET MVCアプリケーションを作成すると、アプリケーションはすでにASP.NETルーティングを使用するように設定されています。 ASP.NETルーティングは2か所にセットアップされています。 最初に、アプリケーションのWeb構成ファイル(Web.configファイル)でASP.NETルーティングが有効になっています。

ルーティングに関連する構成ファイルには、system.web.httpModulesセクション、system.web.httpHandlersセクション、system.webserver.modulesセクション、system.webserver.handlersセクションの4つのセクションがあります。これらのセクションのルーティングが機能しなくなるため、これらのセクションを削除しないように注意してください。

さらに重要なのは、アプリケーションのGlobal.asaxファイルにルートテーブルが作成されていることです。 Global.asaxファイルは、ASP.NETアプリケーションライフサイクルイベントのイベントハンドラを含む特別なファイルです。ルートテーブルは、Application Startイベント中に作成されます。

関連する問題