ASP.NET MVC 通用基础视图类

10

我可以在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),则实际上调用/使用/实例化的是该类。

那么,我是做错了什么还是这是一个限制/错误?谢谢。


可能是 Generic Inherited ViewPage<> and new Property 的重复问题。 - James Khoury
1个回答

7

非常好,非常感谢!在发布之前我尝试在SO上搜索,但我想我没有使用正确的关键词... - pbz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接