我可以在MVC项目中像这样拥有一个视图的基类:
public class BaseViewPage : System.Web.Mvc.ViewPage
{
public string Something { get; set; }
}
然后在ASPX文件中,我可以这样做:
<%@ Page Something="foo" Language="C#" Inherits="MyNamespace.BaseViewPage" %>
这个代码可以正常工作;但当我尝试用通用版本时出现问题:
public class BaseViewPage<TModel> :
System.Web.Mvc.ViewPage<TModel> where TModel : class
{
public string Something { get; set; }
}
当我尝试从ASPX中使用它时,像这样:
<%@ Page Something="foo" Language="C#"
Inherits="MyNamespace.BaseViewPage<SomeClass>" %>
我遇到了如下错误信息:
解析属性'something'时出错:类型'System.Web.Mvc.ViewPage'没有名为'something'的公共属性。
注意它尝试使用的是System.Web.Mvc.ViewPage而不是我的BaseViewPage类。更有趣的是,如果我从Page指令中删除“Something”属性并在BaseViewPage的泛型版本中放置一些代码(例如OnInit),则实际上调用/使用/实例化的是该类。
那么,我是做错了什么还是这是一个限制/错误?谢谢。