.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以查看是否意外定义了一个。