.NET MVC模糊类型引用

时间:2008-09-07 16:54:11

标签: asp.net-mvc

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

我正在尝试创建一个新的.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">

有什么突出的,我做错了吗?

9 个答案:

答案 0 :(得分:3)

我想你的名字之一“ViewPage”是这样的吗?

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

Inherits="System.Web.Mvc.ViewPage"

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

Inherits="MySite.Views.Pages.Home"

或者其他什么东西。您的aspx页面标记应该具有“继承”指向您的代码隐藏类名,而不是它继承的实际类。属性名称相当具有误导性,但它是早期的工件。

答案 1 :(得分:2)

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

示例:

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

确保Inherits是完全限定的。它应该是名称空间,后跟类名。

答案 2 :(得分:2)

我正在运行ASP.NET MVC Beta并且也遇到了此错误。

当我尝试删除视图后面的代码时,它就出现了。我删除了@Page指令中的“CodeBehind”属性,并将“Inherits”属性更改为指向System.Web.Mvc.ViewPage,但在项目中保留了文件后面的实际aspx.cs代码。

此时,如果我试图运行我的项目,我收到你提到的错误。

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

答案 3 :(得分:2)

检查System.Web.Mvc中对web.config的装配参考。

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

 Inherits="System.Web.Mvc.ViewPage"

我想这应该指向您的View codebehind文件类,而不是基于ViewPage类。

答案 6 :(得分:1)

在Reflector中打开C:\ MyProject \ bin \ MyProject.DLL并查找ViewPage,看看你是否偶然定义了一个。

答案 7 :(得分:0)

答案 8 :(得分:0)

本周我有同样的错误。

我的Webform.aspx文件有一个生成的designer.cs文件。在这个文件中,该类实际命名为&#34; ViewPage&#34;。删除设计器文件,或将类内容移动到webform.aspx.cs文件,我的错误消失了。

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