由于某些需要,我创建了自己的自定义视图开始,如下所示:
public abstract class MyViewStart : System.Web.Mvc.ViewStartPage {
public My.Helpers.ThemeHelper Themes { get; private set; }
public MyViewStart() : base() {
Themes = new Helpers.ThemeHelper(base.ViewContext)
}
}
需要的是,在 _ViewStart 中我需要做一些取决于主题的布局文件查找,它所做的与问题无关。
我的 Views/Shared/_ViewStart.cshtml 看起来像这样(删除了不相关的东西):
@inherits MyNamespace.MyViewStart
@{
Layout = Themes.ThemeLayout;
}
因此,我们有一个派生自标准 ViewStartPage 的自定义 ViewStart 类。标准的 _ViewStart.cshtml 是一个 ViewStartPage。新的 _ViewStart.cshtml 是一个 MyViewStart 页面,它又是一个标准的 ViewStartPage,因此所有内容都包含在继承中。
但是,当我运行应用程序时,出现错误:
ViewStartPage 只能与从 WebViewPage 或另一个 ViewStartPage 派生的页面一起使用
这是由我的自定义视图启动类的构造函数中的“Themes = new Helpers.ThemeHelper”行抛出的。那么,当我的自定义视图开始类是 ViewStartPage 的子类时,为什么会引发该异常???