Справочник неоднозначных типов .NET MVC

Не совсем уверен, что здесь происходит; любая помощь будет оценена.

Я пытаюсь создать новое веб-приложение .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">

Есть что-нибудь особенное, что я делаю совершенно не так?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
7 644
9

Ответы 9

Эта ошибка обычно указывает на конфликт именования классов. Вы ссылаетесь на два пространства имен или создали класс с тем же именем в другом пространстве имен, которое вы используете. Я бы начал с рассмотрения того, что это могло быть.

 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

У меня такая же ошибка при обновлении проекта с MVC 2 до MVC 5. Необходимо заменить версию System.Web.Mvc в обоих файлах web.config (в ~ / и ~ / Views /).

Der_Meister 14.01.2014 04:59

На этой неделе у меня была такая же ошибка.

В моем файле Webform.aspx был сгенерирован файл designer.cs. В этом файле класс на самом деле назывался «ViewPage». Удалите файл конструктора или переместите содержимое класса в файл webform.aspx.cs, и моя ошибка исчезла.

Просто выложите его на случай, если у кого-то будет эта ошибка.

Другие вопросы по теме