ASP.NET MVC - 为什么我的视图不能从System.Web.Mvc.ViewPage(T)正确继承

时间:2009-05-12 12:46:09

标签: asp.net-mvc generics inheritance

应该可以在这里使用泛型并传递Model的类类型。但是Visual Studio 2008不接受这一点:

<%@ Page Inherits="System.Web.Mvc.ViewPage(of IEnumerable(of MyNamespace.MyClass))" %>

我收到以下验证错误(在VS中加下划线):'Context' is not a member of 'ASP._views___home___index__asp'

我收到以下运行时错误:BC30456: 'InitializeCulture' is not a member of 'ASP._views___home___index__asp'.

注意,我使用的是Visual Basic.NET - 但这不应该影响问题。

以下是视图的一些截图&amp;控制器,我希望有人看到发生了什么(TestClass是一个带ID和Name属性的简单类):

根据下面的Maik Koster answer,解决方案是:

  1. 重新引用System.Web.Mvc(在GAC中使用,返回本地副本)
  2. 从Controller重新创建视图。右键单击控制器操作 - &gt;创建视图...并从那里修改
  3. 现在,ASP.NET MVC项目中的视图页面指令有一个继承属性,如下所示:

    <%@ Page Inherits="System.Web.Mvc.ViewPage" %>
    

5 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,它或者是由于缺少引用引起的,或者是由于使用了存储库模式并且已经实现了IDisposable

对于后一种情况,我添加了名称空间:System.Data.ObjectsSystem.Data.Objects.DataClasses。接下来,我添加了System.Data.Entity作为参考,并使用

将其添加到web.config中的程序集列表中
<add assembly="System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

这样做后,这个奇怪的错误就消失了。所以你可能想检查你的参考文献。

答案 1 :(得分:2)

这样做:

<%@ Page Inherits="System.Web.Mvc.ViewPage<IEnumerable<MyNamespace.MyClass>>" %>

答案 2 :(得分:1)

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyProject.Helpers.PaginatedList<MyProject.Models.Person>>" %>

希望你有。

答案 3 :(得分:0)

这可能是visual studio intellisense中的bug。我有同样的东西,继承成员在设计器中有下划线但我没有运行时异常。

答案 4 :(得分:0)

我在MVC1中遇到了同样的错误。我更改了模型的命名空间,忘了更新视图。我更新了视图,错误消失了。