ASP MVCエリアとActionLinkの
-
22-08-2019 - |
質問
私は新しい私はフィル・ハークエリアを使用するプロジェクト(1)アイデア+スティーブ・サンダーソンの微調整(2)に取り組んでいます。私は、ビューエリア(フー)へのアクションリンクと簡単なルートビューを持っています。生成されたURLは、適切な面積を有しているが、それは最後にルートコントローラ(バー)を追加します。ここに私のルートビューのコードがあります:
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Index</h2>
<%= Html.ActionLink("Foo Index Page", "Index", new { area="Foo" } )%>
</asp:Content>
、ここではそれが生成するURLです
はlocalhost:6494 /フー/バー
任意のアイデアなぜ "/バー" が上ですか?
(1): haacked.com/archive/2008/ 11月4日/エリアインaspnetmvc.aspxする
(2):ブログ.codeville.net / 2008/11月5日/ APP-エリアインASPNET-MVCテイク-2 / の
解決
私は解決策を見つけました。私はそれが適切であるとは思わないので、私は改善をお願いします。コントローラ名を指定することで、私は、URLが適切に形成するために取得することができます。すなわちます。
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Index</h2>
<%= Html.ActionLink("Foo Index Page", "Index", new { area="Foo", controller="Baz" } )%>
</asp:Content>
私はこれをしなかったら、そのURLは正しかった。
はlocalhost:6494 / Fooの
なぜこれが問題でしょうか?フィルのデモは、名前にHomeControllerとコントローラを使用しています。 (私はトレースすることはできませんので)私はHtml.ActionLink()メソッドは、URLの構築について、どのようになるかわかりません。それは私が持っていないにHomeControllerは、既存のデフォルトの場合、に依存しているかのようにそれが見えます。
誰もがデフォルトにホームという名前のないコントローラーを可能にする方法についての提案を持っている場合は、ご返信ください。おかげ
他のヒント
デフォルトのコントローラ名としてHome
を持っていないために、単に<のhref = "https://stackoverflow.com/questions/849624/asp-net-actionresult-parameter-is-coming-back-null-always-when -passing列/ 849666#849666" は>デフォルトルートを変更します。
@Joe
あなたのApp_Startで/ RouteConfig.csは、あなたが好きなようにホームからデフォルトのコントローラの値を変更する必要がファイルます:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "NAME_OF_YOUR_HOME_CONTROLLER", action = "Index", id = "" } // Parameter defaults
);