nom de « modèle » « html » ni nom existent dans le contexte actuel dans usercontrol MVC et C #
-
22-09-2019 - |
Question
J'utilise Microsoft MVC et C #. J'ai un usercontrol (example.ascx) créé et en haut, je suis héritant System.Web.MVC.ViewUserControl<PostTransferViewModel>
Maintenant, alors que mon nom du modèle est ajouté à ViewUserControl, je reçois « Le nom « modèle »n'existe pas dans le contexte actuel » et « Le nom « Html »n'existe pas dans le contexte actuel. Si j'ai enlevé le <PostTransferViewModel>
à partir de la fin de ViewUserControl alors tout fonctionne très bien, mais je dois <PostTransferViewModel>
.
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<PostTransferViewModel>" %>
<div class="postTransferTank">
<h2>
Approved Post Transfers</h2>
<% if (Model.ApprovedPostTransfers.Count() == 0)
{ %>
<span class="emptyList">There are currently no approved Post Transfers for this tank.</span><br />
<% } %>
<% else
{ %>
<%=Html.DisplayFor(x => x.ApprovedPostTransfers,"PostTransferList") %>
<% } %>
<br />
<%=Html.ActionLink<PostTransferController>(x => x.NewPostTransfer(), "Enter Post Transfer", new { @class = "create-link" })%>
<br />
<% if (Model.DraftPostTransfers.Count() != 0)
{ %>
<h2>
Draft Post Transfers</h2>
<%=Html.DisplayFor(x => x.DraftPostTransfers, "PostTransferList") %>
<% } %>
</div>
La solution
Ce message forum a une solution potentielle à votre problème :
Parfois, IntelliSense ne se présente pas dans les fichiers
aspx/ascx/master
s'il y a une erreur de compilation dans le application. Si vous essayez d'exécuter le site et vous obtenez une erreur de compilation de ASP.NET, essayez de le fixer et voir si cela fonctionne.Si l'application utilisait précédemment ASP.NET MVC Beta et plus tard changé à utiliser la version entièrement libérée alors il est également tout à fait probable que il y a un problème de configuration. Essayer comparer les deux fichiers web.config projet (une à la racine et une dans le dossier Vues) et voir s'il sont les différences entre eux.
Autres conseils
J'ai eu le même problème ...
Dans mon fichier web.config j'avais seulement les espaces de noms réguliers placés dans le noeud ...
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
Une fois que j'ai ajouté à mon nœud l'erreur est parti ...
pages validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
J'espère que cela aide quelqu'un. Je suis coincé pendant deux ou trois heures à essayer de comprendre.
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
Solution pour ce problème