nome 'html' né nome 'modello' esistere nel contesto attuale in UserControl MVC e C #
-
22-09-2019 - |
Domanda
Sto usando Microsoft MVC e C #. Ho un UserControl (example.ascx) creato e nella parte superiore sto ereditando System.Web.MVC.ViewUserControl<PostTransferViewModel>
Ora, mentre il mio nome del modello è allegato al ViewUserControl, ottengo "Il nome 'modello' non esiste nel contesto attuale" e "Il nome 'html' non esiste nel contesto corrente. Se ho tolto il <PostTransferViewModel>
dalla fine del ViewUserControl allora tutto funziona bene, ma ho bisogno <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>
Soluzione
Questo post forum ha una potenziale soluzione al vostro problema :
A volte Intellisense non si presenta in file
aspx/ascx/master
se c'è un errore di compilazione nella applicazione. Se si tenta di eseguire il sito e si ottiene un errore di compilazione da ASP.NET, provare a risolverlo e poi vedere se funziona.Se l'applicazione è stato precedentemente utilizzato ASP.NET MVC beta e poi cambiato in modo da utilizzare la versione completamente rilasciata poi è anche molto probabile che c'è un problema di configurazione. Provare confronto tra i due file web.config in il progetto (uno nella radice e uno nella cartella Viste) e vedere se ci sono delle differenze tra di loro.
Altri suggerimenti
Ho avuto lo stesso problema ...
Nel mio file web.config ho avuto solo gli spazi dei nomi normali poste nel nodo ...
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
Una volta ho aggiunto questo al mio nodo l'errore è andato via ...
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>
Spero che questo aiuta qualcuno. Sono rimasto bloccato per un paio d'ore cercando di capire questo.
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
soluzione per questo problema