で
は練習と経験が必要です。ルーティングメカニズムの背後にあるアイデアは、着信URLを取得し、要求を処理するハンドラ(IHttpHandler)オブジェクトを取得することです。あなたの質問については、MapRoute拡張メソッドの最初のパラメータはルートの名前です。あなたはMVCプロジェクトを設定すると、あなたが得る:
routes.MapRoute(_
' "Default" is your route name. It can be null, "" or some other name that you give it
"Default", _
' This is your URL with parameters
"{controller}/{action}/{id}", _
' Parameter defaults
new { .controller = "Home", .action = "Index", .id = UrlParameter.Optional })
路線名paremeterは、あなただけの名前を使用してコントローラとアクションを呼び出すことができます。たとえば、代わりの:
routes.MapRoute(_
"YourRouteName", _
"ApplicationModule/{id}", _
New With {.controller = "ApplicationModule", .action = "Index", .id = UrlParemeter.Optional })
そして、これを置く:
return RedirectToAction("ActionName", "ControllerName", new { paramId = 1234 });
あなたはそれがこのようなものであるべきルートの設定については
return RedirectToRoute("MyRouteName", new { paramId = 1234 });
のようにルート名を使用することができますプロジェクトを作成するときにMVCがあなたに与える既定値より新しい新しいルート設定。そうしないと、新しいルート設定は捕捉されず、デフォルトの設定は常に着信URを解決しようとしますL 's。
、代わりに使用しての最後に1つの以上の提案、このような
href="<%= ResolveUrl("~/") %>ApplicationModule/Index/<%= Html.Encode(app.id) %>"
使用Url.Content:
href="<%= Url.Content("Index", "ApplicationModule", With New { .id = app.id })"
は、これは自動的に仮想パスを解決し、ビットすっきり見えるでしょう。 Steven SandersonのPro ASP.NET MVC 2 Frameworkを入手する機会があれば、URLとルーティングの仕組みについてははっきりとわかります。
敬具、
Huske
例えば:次のURLは、それを指定せずに記事コントローラのindexメソッドを呼び出す - のhref = "<%= ResolveUrl(" 〜/ ")%>記事"。 IDに起因する問題ですか? – Hallaghan
はい、idをアクション名として扱っています。 –
最終的に私は、私のURLに厳密に指定されたインデックスに固執する必要があります、そうですか? – Hallaghan