【发布时间】:2011-01-13 08:11:01
【问题描述】:
我可以在 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)中,则该类实际上被调用/使用/实例化。
那么,我做错了什么还是这是一个限制/错误?谢谢。
【问题讨论】:
标签: asp.net-mvc views asp.net