2

HomeController と Home 関連のビューを Areas ディレクトリに移動できるかどうかは誰にもわかりませんか?

ルート ディレクトリをきれいに保ち、できる限り ~/Views および ~/Controllers ディレクトリを作成しないようにしています。さらに、これらのルート フォルダーはホームページのものだけであり、それ以外はすべて Areas フォルダーにあることを説明しなければならないため、多少の混乱が生じることがわかります。それは私の組織感覚に合わないだけだと思います。

最も近いのは、ホームエリアのルート登録に次を使用することです。

context.MapRoute(
    "Home_default",
    "Home/{action}/{id}",
    new { controller="Home", action = "index", id = UrlParameter.Optional }
);

...しかし、これは単純な「www.mydomain.com/」だけをキャッチするものではありません。そのためには、Global.asax の「すべてをキャッチする」ルートに、何らかの方法でその要求をホーム エリアに送信するように指示する必要があります。ルート データに area="Home" を追加するだけでは機能しませんでした。「/」のリクエストは、まだルート ディレクトリで HomeController と Views を探しています。

何か案は?

4

2 に答える 2

0

ルートを適用する前に、IISがリクエストURLに「default.aspx」またはデフォルトのドキュメント名を追加している可能性があります。その場合、例は機能しません。(これはIISで構成できます。)

このようなルートが必要になります

context.MapRoute(
   "Home_root"
   ,"/"
   ,new { controller="Home", action="index", id=UrlParameter.Optional }
);

ただし、もちろん、ルートを「/」、「〜」などで始めることはできません。

また

context.MapRoute(
   "Home_root"
   ,"default.aspx{*parameters}" /// or .htm, .asp, .html or whatever IIS may be adding 
   ,new { controller="Home", action="index", id=UrlParameter.Optional }
);

HTH。急いでいるので、私はこれをコンパイルしようとはしていません。

于 2010-07-07T18:00:56.703 に答える
0
// These additions allow me to route default requests for "~/" to the "home" area
engine.ViewLocationFormats = new string[] { 
    "~/Views/{1}/{0}.aspx",
    "~/Views/{1}/{0}.ascx",
    "~/Areas/{1}/Views/{1}/{0}.aspx", // new
    "~/Areas/{1}/Views/{1}/{0}.ascx", // new
    "~/Areas/{1}/Views/{0}.aspx", // new
    "~/Areas/{1}/Views/{0}.ascx", // new
    "~/Views/{1}/{0}.ascx"
};
于 2010-08-17T20:20:51.127 に答える