以下のリンクから、MVC の基本ビュー タイプの変更に関する投稿を読みました。
http://haacked.com/archive/2011/02/21/changeing-base-type-of-a-razor-view.aspx
指示に従いましたが、私のページはまだ を継承していSystem.Web.Mvc.WebViewPage
ます。カスタム ビュー ベースで定義されたプロパティにアクセスできず、実行時にエラーが発生します。@inherits
キーワードを使用すると修正されます。
Web.config
<pages pageBaseType="[MyNamespace].WebViewPageBase">
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
</pages>
WebViewPageBase
public class WebViewPageBase : WebViewPage
{
public SomeType MyProperty { get; set; }
public override void InitHelpers()
{
base.InitHelpers();
MyProperty = { foo };
}
public override void Execute()
{
}
}
public class WebViewPageBase<T> : WebViewPage<T>
{
public SomeType MyProperty { get; set; }
public override void InitHelpers()
{
base.InitHelpers();
MyProperty = { foo };
}
public override void Execute()
{
}
}
部分図
@model TopMenuModel
<div class="topMenu">
@MyProperty
</div>
しかし、私が読んだ投稿には、@inherits
キーワードに関する指示はありません。私が見逃しているもの、または@inherits
すべてのページでキーワードなしでこれを機能させる方法はありますか?
解決済み:
web.config
ディレクトリ内のファイルroot
は正しいものではありません。web.config
ディレクトリ下のファイルのベースタイプを変更したView
ところ、修正されました。