【问题标题】:.NET MVC Ambiguous Type Reference.NET MVC 模糊类型参考
【发布时间】:2010-09-08 02:15:56
【问题描述】:

不完全确定这里发生了什么;任何帮助将不胜感激。

我正在尝试创建一个新的 .NET MVC Web 应用程序。我很确定我已正确设置,但出现以下错误:

The type 'System.Web.Mvc.ViewPage' is ambiguous: it could come from assembly 
'C:\MyProject\bin\System.Web.Mvc.DLL' or from assembly 
'C:\MyProject\bin\MyProject.DLL'. Please specify the assembly explicitly in the type name.

它报告的源错误如下:

Line 1:  <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
Line 2:  
Line 3:  <asp:Content ID="indexContent" ContentPlaceHolderID="MainContentPlaceHolder" runat="server">

我做错了什么?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    我想你把你的一个页面命名为“ViewPage”是这样吗?

    就像@Jonathan 提到的那样,这闻起来很香:

    Inherits="System.Web.Mvc.ViewPage"
    

    在我的 MVC 应用程序中,所有视图页面都改为:

    Inherits="MySite.Views.Pages.Home"
    

    或者类似的东西。您的 aspx 页面标记应该有“继承”指向您的代码隐藏类名称,而不是它继承的实际类。属性名称颇具误导性,但它是早期的产物。

    【讨论】:

      【解决方案2】:

      您是否使用 CodeBehind 文件,我没有看到 CodeBehind="" 您指定继承来源的属性?然后你必须将继承指向代码隐藏的类名。

      例子:

      <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="MvcApplication4.Views.Home.Index" %>
      

      确保继承是完全合格的。它应该是命名空间,后跟类名。

      【讨论】:

        【解决方案3】:

        我正在运行 ASP.NET MVC Beta,也遇到了这个错误。

        它是在我试图删除文件隐藏代码以获取视图时发生的。我删除了@Page 指令中的“CodeBehind”属性,并将“Inherits”属性更改为指向 System.Web.Mvc.ViewPage,但在我的项目中保留了文件后面的实际 aspx.cs 代码。

        此时,如果我尝试运行我的项目,则会收到您提到的错误。

        我通过从我的项目中删除视图的 aspx.cs(代码隐藏)文件解决了这个错误。

        【讨论】:

          【解决方案4】:

          web.config 中检查您对System.Web.Mvc 的程序集引用。

          我的项目明确指定了2.0.0.0,但我的项目引用了3.0.0.0

          【讨论】:

          • 我在将项目从 MVC 2 升级到 MVC 5 时遇到了同样的错误。需要在两个 web.config 文件中替换 System.Web.Mvc 版本(在 ~/ 和 ~/Views/ 中)。
          【解决方案5】:

          此错误通常表示类命名冲突。您正在引用两个名称空间,或者您在正在使用的另一个名称空间中创建了一个具有相同名称的类。我会先看看可能是什么。

          【讨论】:

            【解决方案6】:
             Inherits="System.Web.Mvc.ViewPage"
            

            我想这应该指向您的 View 代码隐藏文件类,而不是基础 ViewPage 类。

            【讨论】:

              【解决方案7】:

              在Reflector中打开C:\MyProject\bin\MyProject.DLL,寻找ViewPage看看是不是你不小心定义了一个。

              【讨论】:

                【解决方案8】:
                【解决方案9】:

                这周我也犯了同样的错误。

                我的 Webform.aspx 文件有一个生成的 Designer.cs 文件。在这个文件中,该类实际上被命名为“ViewPage”。删除设计器文件,或者将类内容移动到 webform.aspx.cs 文件中,我的错误就消失了。

                只是把它放在那里以防有人遇到这个错误。

                【讨论】:

                  猜你喜欢
                  • 2015-02-11
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-01-04
                  相关资源
                  最近更新 更多