имя 'html' и имя 'модель' не существуют в текущем контексте в usercontrol MVC и C # - PullRequest
2 голосов
/ 24 февраля 2010

Я использую Microsoft MVC и C #.У меня есть usercontrol (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>

Ответы [ 3 ]

5 голосов
/ 24 февраля 2010

В этом сообщении на форуме есть потенциальное решение вашей проблемы :

Иногда Intellisense не появляется в aspx/ascx/master файлах, если есть ошибка компиляции в приложение. Если вы попытаетесь запустить сайт, и вы получите ошибку компиляции из ASP.NET, попробуйте исправить это, а затем посмотрите, работает ли он.

Если приложение ранее использовало ASP.NET MVC Beta и вы позже изменились это использовать полностью выпущенную версию то вполне вероятно, что есть проблема с конфигурацией. Пытаться сравнивая два файла web.config в проект (один в корне и один в папке Views) и посмотрите, есть ли Есть ли различия между ними.

3 голосов
/ 24 июня 2011

У меня была такая же проблема ...

В моем файле 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>

Надеюсь, это кому-нибудь поможет. Я застрял на пару часов, пытаясь понять это.

0 голосов
/ 01 июля 2013
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="v11.0" />
  </parameters>
</defaultConnectionFactory>

Решение этой проблемы

...