【问题标题】:ASP.NET MVC generic base view classASP.NET MVC 通用基视图类
【发布时间】: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


【解决方案1】:

几个月前我也有同样的问题。把我逼疯直到Justin Grant answered it here.

【讨论】:

  • 非常好;多谢!我在发帖前尝试搜索 SO,但我想我没有使用正确的词...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-09
  • 1970-01-01
相关资源
最近更新 更多