Построение MVC3-решения прошло успешно, но в браузере появилась ошибка:
Сообщение об ошибке компилятора: CS0234: тип или имя пространства имен «Html» не существует в пространстве имен «System.Web.Mvc» (отсутствует ссылка на сборку?)
Source Error:
Line 25: <add namespace="System.Web.Mvc" />
Line 26: <!--<add namespace="System.Web.Mvc.Ajax" />-->
Line 27: <add namespace="System.Web.Mvc.Html" />
Line 28: <add namespace="System.Web.Routing" />
Line 29: <add namespace="System.Web.WebPages" />
Я установил пакеты для решения NuGet
и настроил для всех проектов MVC3
. Имеет ли MVC3
включать библиотеки System.Web.Mvc.Ajax
, System.Web.Mvc.Html
и другие? Почему я получаю ошибку?
В папке «Ссылки» у меня есть System.Web.Mvc
Runtime version: v4.0.30319
,
Version: 3.0.0.0
Web.config
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=152368
-->
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
<add key="webpages:Version" value="1.0.0.0" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
</pages>
<httpRuntime targetFramework="4.5" encoderType="System.Web.Security.AntiXss.AntiXssEncoder, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<machineKey compatibilityMode="Framework45" />
<profile defaultProvider="DefaultProfileProvider">
<providers>
<add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</profile>
<membership defaultProvider="DefaultMembershipProvider">
<providers>
<add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
<roleManager defaultProvider="DefaultRoleProvider">
<providers>
<add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</roleManager>
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
<providers>
<add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
</providers>
</sessionState>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
<connectionStrings>
<add name="EFDbContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=SportStore;Integrated Security=True;Pooling=False;" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
MSDN пространство имен System.Web.Mvc
файл packages.config
:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="5.0.0-rc" />
<package id="jQuery" version="1.7.2" />
<package id="jQuery.UI.Combined" version="1.8.11" />
<package id="jQuery.Validation" version="1.9" />
<package id="Microsoft.AspNet.Mvc" version="3.0.20105.1" />
<package id="Microsoft.AspNet.Providers.Core" version="1.0" />
<package id="Microsoft.AspNet.Providers.LocalDB" version="1.0" />
<package id="Microsoft.AspNet.Razor" version="1.0.20105.408" />
<package id="Microsoft.AspNet.WebPages" version="1.0.20105.408" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" />
<package id="Modernizr" version="2.0.6" />
<package id="Moq" version="4.0.10827" />
<package id="Ninject" version="3.0.1.10" />
</packages>
c#
asp.net-mvc-3
J.Olufsen
источник
источник
System.Web.MVC
не копируется вbin
папку с MS14-059Ответы:
Очистите свое решение и затем установите свойство этих файлов в
Copy Local = True
.Чтобы установить для свойства Copy Local значение True или False
В обозревателе решений нажмите кнопку Показать все файлы, чтобы отобразить узел «Ссылки».
источник
System.Web.Mvc
По какой-то причине у ДВУХ моих решений есть веб-проекты, которые каким-то образом самопроизвольно удаляли asp.net MVC. Я установил его из Nuget, и теперь они снова работают. Это произошло после недавнего обновления Windows, включающего обновления .net framework для версии, которую я использовал (4.5.1).
Редактировать: из блога .Net веб-разработки и инструменты:
Обновление безопасности Microsoft Asp.Net MVC MS14-059 сломало мою сборку!
источник
Это обычно ловит меня, когда я запускаю из IIS, и пул приложений для сайта по умолчанию установлен на .NET версии 2.0. При использовании IIS из Visual Studio он создает виртуальный каталог, но по-прежнему работает в пуле приложений сайта по умолчанию. Если вы используете встроенный веб-сервер, щелкните правой кнопкой мыши на своем веб-проекте, перейдите в свойства и убедитесь, что вы используете его в нужной версии .NET. На IIS проверьте версию .NET в вашем пуле приложений.
Исходя из моего последнего комментария о том, как был создан проект, правильно ли вы включаете сборки, как показано ниже (взято из файла web.config по умолчанию, сгенерированного шаблоном проекта MVC3 в VS10):
источник
Вам необходимо обновить MVC.
источник
У меня была та же проблема - мой сценарий состоял в том, что я ссылался на новый System.Web.Mvc.dll из папки lib, и у меня не было «Копировать локальный», установленный в значение «истина». Затем приложение возвращалось к версии в GAC, в которой не было правильных пространств имен (Html, Ajax и т. Д.), И давала мне ошибку во время выполнения.
источник
Мое решение было под Управление пакетами Nuget для решения ...». У меня было множество обновлений для нескольких пакетов.
Позвольте мне вернуться на полшага и сказать, что я облажался, потому что я переместил решение и проекты из одной папки в другую ... так что все уже вышло из-под контроля по сравнению с тем, что проектам казалось. Все прошло очень хорошо, но, видимо, Nuget запутается, если вы не используете другой подход, чем я.
Вернемся к решению ... Я просто пошел в Управление пакетами Nuget для решения ... >> Обновления >> Microsoft и .NET и нажал кнопку Обновить все .
Все вернулось на круги своя и счастливое.
источник
Я скачал проект MVC 5 и проблема, указывающая на
С этим сообщением об ошибке:
-> в котором я пришел на эту веб-страницу и попробовал чистку и несколько вещей выше и т.д ...
То, что работало для меня, было просто
источник
Выполнение следующей команды в менеджере пакетов nuget исправило это для меня:
источник
Этот ответ довольно поздно, учитывая дату вопроса, но кто-то может найти его полезным.
Ни одно из перечисленных выше решений не работало для меня в Visual Studio 2012 над локальным проектом, Net Framework 4.5 MVC 4. Для контекста я следовал учебному пособию по созданию базовых веб-интерфейсов API на CodeProject ( http://www.codeproject.com/ Статьи / 615805 / Создание чистого минимального следа ASP-NET-WebAPI ), когда я столкнулся с этой проблемой.
Что работало для меня, так это явное добавление «System.Web.Mvc» к ссылкам моего приложения, даже если приложение уже ссылалось на «System.Web».
источник
У меня была такая же проблема, но ничего из вышеперечисленного не помогло мне. Они действительно направили меня в правильном направлении, хотя.
Например, когда я устанавливаю «Copy Local» в «true» для ссылки System.Web.Mvc, он автоматически устанавливает значение «False».
У меня есть несколько проектов, которые зависят от ссылки System.Web.Mvc в моем решении, но только один вызвал эту проблему. В VS 2012 эта ссылка помечена желтым треугольником внимания.
Найти эту ссылку => удалить ее => заново добавить
Это исправило это для меня. Надеюсь это поможет
источник
Просмотрите и проверьте ссылочные пути в вашем csproj.
Я удалил ссылки на System.Web.Mvc (и другие) и добавил их в произвольный путь.
C:\Project\OurWebReferences
Однако после этого путь ссылки в неподвижном csproj не изменился. БЫЛ
Изменено на вручную
Пути являются только примером.
источник
Для меня решение состояло в том, чтобы все проекты создавались для одного и того же процессора - в моем случае x86
источник
Копировать Local = True было решено для одного из моих проектов. Но в другом проекте я получаю ту же ошибку, пытался установить Copy Local = true, но это не решило мою проблему. Помогло в этом изменение целевого фреймворка с 4.5.1 до 4.5 в свойствах проекта.
источник
Я сделал что-то действительно глупое (и, возможно, ты тоже).
Я пытался позвонить
System.Web.Mvc.Html.Partial("<Partial Page>")
System.Web.Mvc.Html - это пространство имен, а не класс, и я не так хорошо прочитал свое сообщение об ошибке, поэтому интерпретировал свою ошибку как класс
Html
не существует в пространстве имен System.Web.Mvc, и вот как я закончил здесь (глупо, я знаю).Все, что мне нужно было сделать, это добавить
@using System.Web.Mvc.Html
на свою страницу заявление об использовании, а затем@Html.Partial
работать так, как ожидалось.источник
Если что-либо из перечисленного не решит вашу проблему, просто установите свойства System.Web.Mvc.dll для копирования локальной программы.
это решит
источник
У меня была такая же проблема, но в моем случае возник другой фактор. Я пишу это, чтобы помочь другим людям с той же проблемой. У меня есть решения с несколькими проектами. два из них работают с System.Web.Mvc. Обычно наша ссылка указывала на внешние пакеты, где мы контролировали используемую версию. По какой-то причине одна из ссылок проекта идет в GAC и указывает на DLL GAC (версия 4.0.0.1), и программа получила ошибку. Чтобы исправить это:
Просто проверьте, указывают ли ссылки на System.Web.Mvc на одну и ту же dll в том же пути к каталогу.
Я надеюсь, что это поможет.
источник
Я удалил System.Web.dll из бин-фролдера моего сайта.
источник
У меня была эта проблема, установка локального копирования и выключения и т.д. не работала. В проекте не использовался nuget, поэтому исправлений вокруг этого также не могло быть и речи.
Для меня было исправлено установить MVC 3 (что я сделал через установщик веб-платформы).
Я подозреваю, что это станет более подходящим решением для людей, так как .net Framework продолжает развиваться, и у людей не установлены старые версии MVC.
источник
Вполне вероятно, что установка вашей DLL на CopyLocal / true или любое другое серьезное исправление для этого решит вашу проблему, но вот еще один крайний случай, который поймал меня на 20 минут потраченного времени.
Когда вы добавляете свои пространства имен в файл Views / Web.config, убедитесь, что они правильно указаны:
источник
Итак, многие люди, похоже, испытывают эту проблему. Моя проблема была вызвана ссылками, имеющими пути к папкам bin других проектов, или ссылками на dll из системных папок. Проекту было около 6 лет, и предыдущие разработчики решили, что именно так они будут ссылаться на свои библиотеки.
Решение состояло в том, чтобы просмотреть каждую ссылку и проверить пути, затем удалить ссылку и добавить ее с помощью NuGet. Для любого пакета, которого нет в NuGet, я создал еще одну папку рядом с пакетами и поместил туда dll в том же макете, что и NuGet.
Мне также пришлось просмотреть файлы конфигурации и убедиться, что используется правильная версия пакетов. Долгий и мучительный процесс!
источник
У меня есть проект, который делает это всякий раз, когда я строю с открытым View. Как только я закрыл представление, ошибка исчезает и сборка завершается успешно. Очень странно.
источник
У меня была та же самая проблема, ни одно из решений не работало для меня, Наконец я удалил
System.Web.MVC
и добавил снова. Тогда все вернулось в норму, и моя проблема была решена.источник