2010-02-24 6 views
2

Я использую Microsoft MVC и C#. У меня есть usercontrol (example.ascx), и наверху я наследую System.Web.MVC.ViewUserControl<PostTransferViewModel>name 'html' или name 'model' существуют в текущем контексте в usercontrol MVC и C#

Теперь, когда мое имя модели добавлено к 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> 
+0

просто хотите проверить, это делает управление жить внутри проекта, который имеет ссылку на System.Web.Mvc –

+0

Да, что делает вещи еще более странно. Что смешно, у меня есть другие пользовательские элементы управления, которые ссылаются на другие модели в строке «Inherits», и я не получаю эту ошибку. Думаю, я мог бы упомянуть об этом. –

+0

Является ли это ошибкой во время выполнения или просто проблемой автозаполнения или «во время редактирования»? –

ответ

4

Этот форум пост имеет potential solution to your problem:..

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

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

2

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

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

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

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

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