不完全确定这里发生了什么;任何帮助将不胜感激。
我正在尝试创建一个新的.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">
有什么突出的,我做错了吗?
答案 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文件,我的错误消失了。
只是把它放在那里以防有人有这个错误。