имя «html» и имя «модель» не существуют в текущем контексте в пользовательском управлении MVC и C#
-
22-09-2019 - |
Вопрос
Я использую Microsoft MVC и C#.У меня создан пользовательский элемент управления (example.ascx), и вверху я наследую System.Web.MVC.ViewUserControl<PostTransferViewModel>
Теперь, когда имя моей модели добавляется к ViewUserControl, я получаю сообщения «Имя «Модель» не существует в текущем контексте» и «Имя «Html» не существует в текущем контексте.Если бы я удалил <PostTransferViewModel>
с конца ViewUserControl то все работает нормально, но мне нужно <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>
Решение
В этом сообщении на форуме есть возможное решение вашей проблемы:
Иногда Intellisense не появляется в
aspx/ascx/master
Файлы, если в приложении есть ошибка компиляции.Если вы попробуете запустить сайт, и вы получите ошибку компиляции от ASP.NET, попробуйте исправить его, а затем посмотрите, работает ли он.Если приложение ранее использовало бета -версию ASP.NET MVC, и вы позже изменили ее, чтобы использовать полностью выпущенную версию, то также вполне вероятно, что возникает проблема конфигурации.Попробуйте сравнить два файла web.config в проекте (один в корне и один в папке представлений) и посмотрите, есть ли какие -либо различия между ними.
Другие советы
У меня такая же проблема...
В моем файле web.config у меня были только обычные пространства имен, размещенные в узле...
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
Как только я добавил это в свой узел, ошибка исчезла...
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>
Надеюсь, это кому-то поможет.Я застрял на пару часов, пытаясь понять это.
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
Решение этой проблемы