/ / ASP.NET MVC:エリアが指定されていない限り、常にデフォルトエリアに自動リンク - asp.net-mvc、asp.net-mvc-routing、asp.net-mvc-areas

ASP.NET MVC:エリアが指定されていない限り、常にデフォルトエリアに自動リンク - asp.net-mvc、asp.net-mvc-routing、asp.net-mvc-areas

私は領域がない既存のアプリケーションを持っています。しかし、私は完全に新しいセクションを追加するので、私は作成された領域を持っています。だから私は1つの領域とデフォルト領域を持っています。

したがって、たとえば:

デフォルトルート= /請求書/作成

エリアルート= / TAE /ポート/作成

これらのリンクはどちらも機能します。しかし、私がTAEエリアセクションにナビゲートすると、すべてのリンクがそのTAEエリア内に変わります。例:/ TAE /請求書/作成

アクションリンクに新しい{area = ""}を追加する領域を持たないようにすることができますが、これはアプリケーションのすべてのリンクを変更することになります。

現在のページがどの領域にあるかにかかわらず、指定された領域のないアクションリンクを常にデフォルト領域に移動させることは可能ですか?

global.asax.cs

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

routes.MapRoute(
"Default",                                              // Route name
"{controller}/{action}/{id}",                           // URL with parameters
new { area="", controller = "Home", action = "Index", id = "" }, // Parameter defaults
new string[] { "BankingDB.Controllers" } //namespaces
);

}

TAEAreaRegistration.cs

    public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"TAE_default",
"TAE/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}

TAEエリアへのリンク:

<%= Html.ActionLink("Create", "Create", "Port" , new { area = "TAE"}, new {}) %>

ノーマルエリアリンク:

<%= Html.ActionLink("Create", "Create", "Invoice") %>

回答:

回答№1は0

編集: 私はあなたがどこにでもエリアを使うつもりならば、あなたはそれらをすべてエリアで作るべきだということをお勧めします。

それ以外の場合は、そのシグネチャで拡張子を上書きして、area = ""にデフォルトにして、それを書く必要はありません。D これはあなたが上書きしたいものへのリンクです; D

余分な編集: ちょうどあなたが私があなたに与えた道を理解したことを確認する。あなたは簡単にパラメータ領域の空白が既に埋め込まれている関数を呼び出す新しい拡張を作ることができます。または常にちょうど幸運を上書きする