2010-02-05 44 views
10

我可以有一個基類的觀點在MVC項目是這樣的:ASP.NET 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),則該類實際上被稱爲/ used/instantiated。

那麼,我做錯了什麼或者這是一個限制/錯誤?謝謝。

+0

[Generic Inherited ViewPage <> and new Property](http://stackoverflow.com/questions/1480373/generic-inherited-viewpage-and-new-property) – 2012-08-18 02:16:32

回答

7

幾個月前我有這個完全相同的問題。驅動我堅果,直到Justin Grant answered it here.

+0

非常好;非常感謝!我試圖在發佈之前進行搜索,但我想我沒有使用正確的單詞...... – pbz 2010-02-05 01:36:45