2010-04-21 14 views
7

在我的MVC應用程序中,我通常會聲明一個基本視圖類型,即所有視圖都繼承自該視圖。當我在頁面聲明中指定Inherits="MyView"時出現解析器錯誤,但如果指定Inherits="MyApp.Web.Views.MyView",則不會出現解析器錯誤。在ASP.NET MVC中,爲什麼我不能從「MyCustomView」繼承而不指定完整的類型名稱?

奇怪的是,它工作正常,如果我指定一個強類型的視圖名稱Inherits="MyView<T>(其中T是任何有效的類型)。

爲什麼我可以指定一個沒有完整類型名稱但不是通用視圖的強類型視圖?

我的基本觀點類被聲明如下:

namespace MyApp.Web.Views { 
    public class MyView : MyView<object> { 
    } 

    public class MyView<TModel> : ViewPage<TModel> where TModel : class { 
    } 
} 

UPDATE:請注意,我通過web.config中做進口MyApp.Web.Views。如果我沒有,那麼強類型的方法(Inherits="MyView<T>")也不起作用。

回答

1

從另一篇文章:這裏的根本問題:在ASP.NET頁面分析器不支持泛型的頁面類型

閱讀這裏 - Generic Inherited ViewPage<> and new Property

+0

非常有趣......我還沒有閱讀那個頁面上的所有代碼,但它聽起來像我報告的問題是由一些在後臺完成的通用/非通用juju引起的。如果我成功使用Justin的代碼來解決我的問題,我會在此發佈更新。 – 2010-05-05 13:02:17

1

您可以將命名空間添加到您的web.config文件的<namespaces>元素,那麼你應該能夠使用Inherits="MyView"

<pages> 
    <namespaces> 
    <add namespace="System.Web.Mvc" /> 
    <add namespace="System.Web.Mvc.Ajax" /> 
    <add namespace="System.Web.Mvc.Html" /> 
    <add namespace="System.Web.Routing" /> 
    <add namespace="MyApp.Web.Views" /> 
    </namespaces> 
</pages> 
+0

我_do_導入命名空間是這樣的。否則強類型視圖[Inherits =「MyView [ModelType]」]也不起作用。 – 2010-04-21 16:25:57

+0

@Seth:但是,您是否在web.config中添加了名稱空間? – 2010-05-04 23:28:13

相關問題