2010-02-05 18 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>" %> 

मैं त्रुटि संदेश मिलता है:

विशेषता 'कुछ' को पार्स करने में त्रुटि: 'System.Web.Mvc.ViewPage' टाइप करें 'public' नामक सार्वजनिक संपत्ति नहीं है।

ध्यान दें कि यह मेरी बेसव्यूपेज कक्षा के बजाय System.Web.Mvc.ViewPage का उपयोग करने का प्रयास कैसे करता है। इसे और अधिक रोचक बनाने के लिए, यदि मैं पृष्ठ निर्देश से "कुछ" विशेषता हटा देता हूं और बेसव्यूपेज (उदाहरण के लिए ऑनइनिट) के सामान्य संस्करण में कुछ कोड डालता हूं तो कक्षा को वास्तव में/उपयोग/तत्काल कहा जाता है।

तो, क्या मैं कुछ गलत कर रहा हूं या यह एक सीमा/बग है? धन्यवाद।

+0

[जेनेरिक विरासत में प्राप्त ViewPage <> और नई संपत्ति] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/1480373/generic-inherited-viewpage-and-new-property) –

उत्तर

7

कुछ महीने पहले मेरे पास यह वही सवाल था। मुझे पागल कर दिया Justin Grant answered it here. तक

+0

बहुत अच्छा; आपका बहुत बहुत धन्यवाद! मैंने पोस्ट करने से पहले एसओ खोजने की कोशिश की, लेकिन मुझे लगता है कि मैंने सही शब्दों का उपयोग नहीं किया ... – pbz