Я прочитал сообщение об изменении типа базового вида в MVC по ссылке ниже:
http://haacked.com/archive/2011/02/21/changing-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
и исправил его.