2008-09-07 148 views
5

不完全確定這裏發生了什麼;任何幫助,將不勝感激。.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"> 

任何站出來的是我完全錯了嗎?

回答

1

此錯誤通常表示類命名衝突。您正在引用兩個名稱空間,或者您在使用的另一個名稱空間中創建了一個具有相同名稱的類。我會先看看可能是什麼。

1
Inherits="System.Web.Mvc.ViewPage" 

我想象這應該指向你的View codebehind文件類,而不是在基本的ViewPage類。

2

您是否使用了CodeBehind文件,我沒有看到CodeBehind =「」屬性,您指定的是繼承自?然後,您必須指向繼承到代碼隱藏的類名稱。

例子:

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

確保繼承是完全合格的。它應該是名稱空間,後跟類名稱。

3

我想你把你的一個頁面命名爲「ViewPage」就是這樣嗎?

而像@Jonathan提到的,這種氣味:

Inherits="System.Web.Mvc.ViewPage" 

在我的MVC應用程序,所有視圖頁面有這個代替:

Inherits="MySite.Views.Pages.Home" 

或沿行的東西。你的aspx頁面標記應該有「Inherits」指向你的代碼隱藏類名,而不是它繼承的實際類。屬性名稱相當具有誤導性,但它是早期的人造物品。

2

我正在運行ASP.NET MVC Beta,並且也遇到了這個錯誤。

它出現時,我試圖刪除文件後面的代碼爲視圖。我刪除了@Page指令中的「CodeBehind」屬性,並將「Inherits」屬性更改爲指向System.Web.Mvc.ViewPage,但在項目中保留了實際的aspx.cs代碼。

在這一點上,如果我試圖運行我的項目,我得到了你提到的錯誤。

我解決了這個錯誤,從我的項目中刪除了視圖的aspx.cs(代碼隱藏)文件。

1

在Reflector中打開C:\ MyProject \ bin \ MyProject.DLL並查找ViewPage,看看您是否意外定義了一個。

2

檢查您的程序集引用System.Web.Mvcweb.config

雷人明確指定2.0.0.0,但我的項目中引用3.0.0.0

+0

我得到了同樣的錯誤時升級的項目從MVC 2 MVC 5.必須同時在web.config文件中,以取代System.Web.Mvc版本(在〜/和〜/查看/)。 – 2014-01-14 00:59:13

0

這個星期我有完全相同的錯誤。

我的Webform.aspx文件有一個生成的designer.cs文件。在這個文件中,這個類實際上被命名爲「ViewPage」。刪除設計器文件,或將類內容移到webform.aspx.cs文件中,我的錯誤消失了。

只是把它放在那裏以防萬一有人有這個錯誤。