asp.net mvcのカスタム表示場所
MVCプロジェクトを整理する場合、表示操作のカスタム場所を指定する必要がある場合があります。これにより、コントローラーは特定のサブフォルダーのビューを見つけて、独自のディレクトリ構造を持つプロジェクトに適応できます。
質問:
次のレイアウトを備えたプロジェクトの:
次のコードを備えたdemoarea1Controller:
<code>/Controllers
/Demo
/DemoArea1Controller
/DemoArea2Controller
等等...
/Views
/Demo
/DemoArea1/Index.aspx
/DemoArea2/Index.aspx</code>
ログイン後にコピー
「ビュー「インデックス」またはその母版ページ」が引き起こされます。デフォルトでは、MVCは次の場所で検索します。
<code>public ActionResult Index()
{
return View();
}</code>
ログイン後にコピー
〜/views/controllname/actionname.aspx
〜/views/controllname/actionname.ascx
- 〜/views/shared/actionname.aspx
- 〜/views/shared/actionname.ascx
-
この問題は、コントローラーが〜/views/demoarea1でindex.aspxビューを見つけることを期待しているためですが、ビューは〜/views/demo/demoarea1/index.aspxにあります。
- 解決策:
ビューの検索操作のカスタム位置を指定するには、WebFormViewEngineクラスを拡張してください:
この拡張エンジンでは、追加の検索位置〜/demo/views/{1}/{0} .aspxがビュー位置リストに追加されました。これにより、デモの命名スペースにあるコントローラーがデモビンカーのビンカーでビューを見つけることができます。
global.asax.csのapplication_startメソッドでカスタムビューエンジンを登録することを忘れないでください:
カスタムビューエンジンを作成することにより、開発者はASP.NET MVCプロジェクトで柔軟性と組織性を提供するために、ビューの追加の検索場所を簡単に指定できます。 <code>public class CustomViewEngine : WebFormViewEngine
{
public CustomViewEngine()
{
var viewLocations = new[] {
"~/Views/{1}/{0}.aspx",
"~/Views/{1}/{0}.ascx",
"~/Views/Shared/{0}.aspx",
"~/Views/Shared/{0}.ascx",
"~/Demo/Views/{1}/{0}.aspx",
"~/Demo/Views/{1}/{0}.ascx"
};
this.PartialViewLocationFormats = viewLocations;
this.ViewLocationFormats = viewLocations;
}
}</code>
ログイン後にコピー
以上がASP.NET MVC でビューの検索場所をカスタマイズして、特定のサブフォルダー内のビューを検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。