我从下面的链接中阅读了一篇关于在 MVC 上更改基本视图类型的帖子:
http://haacked.com/archive/2011/02/21/changeing-base-type-of-a-razor-view.aspx
我按照说明进行操作,但我的页面仍然继承自System.Web.Mvc.WebViewPage
. 我无法访问自定义视图库中定义的任何属性,并且在运行时出现错误。当我使用@inherits
关键字时,它会修复。
网页配置
<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
并修复了它。