WebForms .Net 4.0 を使用するソリューションがあります。同じソリューションで MVC3 を利用する予定です。私は Scott Hanselmanのブログをフォローしていましたが、順調に進んでいました。
私はこれにまったく慣れていないことを認めなければなりません。ただし、名前空間に関してルートが実際にどのように機能するかについて、私は大きな部分を見逃しているようです。
現在、私たちのソリューションには次のものがあります。
WebApplicatin:
Accounting
Receivables
ReceivablesGrid.aspx
ReceivableForm.aspx
Payables
PayablesGrid.aspx
PayablesForm
..etc.
したがって、次を使用してページをリクエストできます
Domain/Accounting/Receivables/ReceivablesGrid.aspx
Domain/Accounting/Receivables/ReceivableForm.aspx?Key=1
Domain/Accounting/Payables/PayablesGrid.aspx
Domain/Accounting/Payables/PayablesForm.aspx?Key=1
....
MVCに似た別のレイヤーを追加する予定です。
WebApplicatin:
Accounting
Receivables
ReceivablesGrid.aspx
ReceivableForm.aspx
Mobile
Controllers
ReceivableConroller.cs
Models
Views
Receivables
Index
Update
Edit
Create
Payables
PayablesGrid.aspx
PayablesForm
Mobile
Controllers
PayablesConroller.cs
Models
Views
Payables
Index
Update
Edit
Create
..etc.
もちろん、これは本名ではありません。ただし、できるだけ自分の状況に近づけようとしました。残念ながら、同じ名前空間に追加される可能性のあるロジックの一部を使用できるため、これに従うのが最善です。さらに、ルートにコントローラー、ビュー、モデルに似たフォルダーを作成しても、私のソリューションでは機能しません。
Global.asax で、次のようなルートを追加しました。
routes.MapRoute(
"AccountingReceivablesMobile", // Route name
"Accounting/Receivables/Mobile/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
routes.MapRoute(
"AccountingPayablesMobile", // Route name
"Accounting/Payables/Mobile/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
私が最終的に試みた別の解決策は、RazorViewEngine を拡張することです。新しいエンジンのコンストラクターで、次のように 2 つのプロパティを設定します。
base.ViewLocationFormats = new string[] { "~/Accounting/Receivables/Mobile/Views/{1}/{0}.cshtml",
"~/Accounting/Payables/Mobile/Views/{1}/{0}.cshtml"
};
base.MasterLocationFormats = new[] { "~/Views/Shared/{0}.cshtml"}.
これは非常にうまくいきました。ただし、これらのルートを追加することは、webForm を追加するほどスケーラブルではないと感じています。私の問題は、可能なすべてのルートにルートを追加したくないということです。つまり、新しいビューを追加すると、配列への別のルートまたはエントリが作成されます。それで、どうすればこれをもっと簡単にできますか?私は何を間違っていますか?Areas を見ましたが、Areas フォルダーを作成してその中に入れる必要があるようです。
ありがとう、