web-dev-qa-db-fra.com

"Le nom 'HTML' n'existe pas dans le contexte actuel" dans MVC 3 Views

Je commence à utiliser "MVC 3" mais j'ai quelques problèmes à résoudre. Dans mes vues, lorsque je code quelque chose comme ceci:

@if(Request.IsAuthenticated) {
    <text>Welcome <b>@Context.User.Identity.Name</b>!
    [ @Html.ActionLink("Log Off", "LogOff", "Account") ]</text>
}
else {
    @:[ @Html.ActionLink("Log On", "LogOn", "Account") ]
}

Les objets tels que @Request et @Html indiquent une erreur: The name 'HTML' does not exist in the current context

La même chose se produit avec @Context, @ViewBag, @Layout, @Url et autres. 

Voir: 

image http://i56.tinypic.com/28s1smp.jpg

Mais le code est correctement compilé sans erreur. Le problème est que je ne peux pas utiliser Intellisense avec ces objets dans les vues. Est-ce normal? (Je ne le pense pas). Que pourrait-il se passer?

J'ai réinstallé le framework MVC 3 mais la même chose se produit.

Remarque: il s'agit d'un nouveau projet à partir de zéro, pas d'une migration MVC 2. Cela se produit à la fois avec le moteur Razor et ASPX.

C'est le Web.Config dans le dossier Vues:

<?xml version="1.0"?>

<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="Host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

  <appSettings>
    <add key="webpages:Enabled" value="false" />
  </appSettings>

  <system.web>
    <httpHandlers>
      <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
    </httpHandlers>

    <!--
        Enabling request validation in view pages would cause validation to occur
        after the input has already been processed by the controller. By default
        MVC performs request validation before a controller processes the input.
        To change this behavior apply the ValidateInputAttribute to a
        controller or action.
    -->
    <pages
        validateRequest="false"
        pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <controls>
        <add Assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
      </controls>
    </pages>
  </system.web>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />

    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>
</configuration>

Merci!

26
outlookrperson

J'ai résolu ce problème avec l'ancienne, la bonne solution sage par défaut de Microsoft: réinstallez tout à nouveau.

Désinstallez et réinstallez Visual Studio 2010 et MVC 3 Framework.

8
outlookrperson

Tu pourrais essayer:

  1. Fermez la View avec les fausses erreurs.

  2. Fermer Visual Studio

  3. Rouvrir le même projet

  4. Ouvrez une View différente de celle à l'origine des erreurs

  5. Fermez cette View, j'espère que vous n'avez vu aucune des erreurs similaires dans cette View

  6. Rouvrez la View qui vous a posé des problèmes plus tôt

17
Serj Sagan

Nettoyez votre solution et sous références. Ensuite, définissez la propriété suivante:

System.Web.MVC file to Copy Local = True.
7
Manu

Tout ce que j'avais à faire était de fermer toutes les vues ouvertes dans l'éditeur et de les reconstruire.

4
steveareeno

Ce qui a fonctionné pour moi a été la fermeture de Visual Studio, la suppression des fichiers d’options utilisateur (au niveau solution et projet), puis la relance de Visual Studio.

1
dChimento

Pour moi, cela semblait juste être le fait que j'avais des avertissements du compilateur. Le code serait toujours compilé et exécuté correctement mais ce n’est pas avant que j’ai corrigé tous les avertissements de construction que mon Intellisense commence à fonctionner.

1
craigvl

Définissez la propriété de System.Web.MVC, Copy Local = True

0
Anup Shetty

J'ai essayé de supprimer le projet qui pose toujours problème et de le rajouter, après quoi le problème avait disparu.

0
Pranithan T.
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="v11.0" />
  </parameters>
</defaultConnectionFactory>

solution pour ce problème dans web.config

0
ciqueira

Toutes mes excuses pour le post necro.

La sélection de "Build | Rebuild Solution" a corrigé ce problème dans Visual Studio 2015. Dans mon cas, les avertissements se sont produits après le changement de nom de l'espace de nom principal d'un projet. Une reconstruction a tout remis en ordre.

0
George N

J'ai eu le même problème dans MVC 4. Aucune de ces solutions ne fonctionnait pour moi. Au lieu de cela, sous Windows, je suis allé dans le Panneau de configuration -> Désinstaller un programme. Sélectionnez Microsoft ASP.NET MVC 4 dans la liste de programmes. Cliquez sur "Désinstaller". Un assistant d'installation de Microsoft ASP.NET MVC 4 s'affiche. Cliquez sur "Réparer".

0
Jason

Je l'ai également expérimenté sur ASP.NET MVC 4, après avoir désinstallé EntityFramework de ma liste de packages.

Je devais enlever cette section 

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, ....

qui reste sur le fichier Web.config ... au moins il a supprimé les erreurs de la liste des erreurs

0
AceMark

J'utilise le noyau ASP .net. J'ai résolu le mien en passant de Microsoft.AspNetCore.Mvc de 1.1.2 à 1.1.3.

0
Lawrence

Pour moi, je viens de redémarrer mes Visual Studios et tout a été corrigé. 

0
Adeel Asghar

Peut-être que je suis un peu en retard pour répondre à cette question mais cette solution facile m'a aidé:

Cliquez avec le bouton droit de la souris sur le fichier> Exclure du projet . Cliquez avec le bouton droit de la souris sur le fichier> Inclure dans le projet.

0
Ron Splinter

Dans mon cas, mon dossier Packages était absent, y compris MVC et Razor. J'ai donc mis à jour les packages dans packages.config, rouvert la vue et cela a fonctionné.

0
derloopkat