Не совсем уверен, что здесь происходит; любая помощь будет оценена.
Я пытаюсь создать новое веб-приложение .NET MVC. Я был почти уверен, что настроил его правильно, но получаю следующую ошибку:
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" %>
Убедитесь, что Inherits полностью квалифицирован. Это должно быть пространство имен, за которым следует имя класса.
Я полагаю, вы назвали одну из своих страниц "ViewPage", это так?
И, как упоминал @Jonathan, это пахнет:
Inherits = "System.Web.Mvc.ViewPage"
В моем приложении MVC, все, вместо этого на страницах просмотра есть следующее:
Inherits = "MySite.Views.Pages.Home"
Или что-то в этом роде. Разметка страницы aspx должна иметь «Наследование», указывающее на имя класса кода программной части, а не на фактический класс, который он наследует. Название атрибута вводит в заблуждение, но это артефакт прежних дней.
Я запускаю бета-версию ASP.NET MVC и тоже столкнулся с этой ошибкой.
Это произошло, когда я пытался удалить код файла для представления. Я удалил атрибут «CodeBehind» в директиве @Page и изменил атрибут «Inherits», чтобы он указывал на System.Web.Mvc.ViewPage, но оставил фактический код aspx.cs за файлом в моем проекте нетронутым.
На этом этапе, если я пытался запустить свой проект, я получал указанную вами ошибку.
Я решил эту ошибку, удалив файл aspx.cs (код позади) для представления из моего проекта.
Откройте C: \ MyProject \ bin \ MyProject.DLL в Reflector и найдите ViewPage, чтобы узнать, не определили ли вы его случайно.
Нет, это должно быть сообщение о структурной ошибке.
Проверьте ссылки на сборку System.Web.Mvc в web.config.
Мои явно указывали 2.0.0.0, но мой проект ссылался на 3.0.0.0
На этой неделе у меня была такая же ошибка.
В моем файле Webform.aspx был сгенерирован файл designer.cs. В этом файле класс на самом деле назывался «ViewPage». Удалите файл конструктора или переместите содержимое класса в файл webform.aspx.cs, и моя ошибка исчезла.
Просто выложите его на случай, если у кого-то будет эта ошибка.
У меня такая же ошибка при обновлении проекта с MVC 2 до MVC 5. Необходимо заменить версию System.Web.Mvc в обоих файлах web.config (в ~ / и ~ / Views /).