开发者

In ASP.NET MVC, why can't I inherit from "MyCustomView" without specifying the full type name? [duplicate]

This question already has an answer here: Generic Inherited ViewPage<> and new Property (1 answer) Closed 2 years ago. 开发者_JAVA技巧

In my MVC apps I normally declare a base view type that all of my views inherit from. I get a parser error when I specify Inherits="MyView" in my Page declaration, but not if I specify Inherits="MyApp.Web.Views.MyView".

Strangely enough, it works fine if I specify a strongly typed view name: Inherits="MyView<T> (where T is any valid type).

Why can I specify a strongly typed view without the full type name, but not a generic view?

My base view class is declared like this:

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

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

UPDATE: Note that I do import MyApp.Web.Views via web.config. If I did not, then the strongly typed approach (Inherits="MyView<T>") wouldn't work either.


From another post: Here's the underlying issue: the ASP.NET page parser does not support generics as a page type

Read more here- Generic Inherited ViewPage<> and new Property


You can add your namespace to the <namespaces> element of your web.config file then you should be able to use 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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜