.NET MVC模糊类型参考

时间:2020-03-05 18:49:01  来源:igfitidea点击:

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

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

有什么能说明我做错了吗?

解决方案

回答

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

回答

Inherits="System.Web.Mvc.ViewPage"

我想这应该指向文件类后面的View代码,而不是指向基本ViewPage类。

回答

我们在使用CodeBehind文件时,在指定"继承自"的地方看不到CodeBehind =""属性吗?然后,我们必须将继承指向后面代码的类名称。

例子:

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

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

回答

我想我们将页面之一命名为" ViewPage"是这样吗?

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

Inherits="System.Web.Mvc.ViewPage"

在我的MVC应用程序上,所有视图页面都具有以下内容:

Inherits="MySite.Views.Pages.Home"

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

回答

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

它是在我尝试删除文件后面的代码以进行查看时发生的。我在@Page指令中删除了" CodeBehind"属性,并更改了" Inherits"属性以指向System.Web.Mvc.ViewPage,但实际的aspx.cs代码在我的项目中没有被修改。

在这一点上,如果我尝试运行我的项目,则会收到我们提到的错误。

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

回答

在Reflector中打开C:\ MyProject \ bin \ MyProject.DLL并查找ViewPage以查看是否意外定义了一个。