Почему я не могу назвать Model, ViewData и Html на строго типизированной странице? - PullRequest
2 голосов
/ 12 ноября 2009

Я создал новый строго типизированный вид, примерно так:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
  Inherits="System.Web.Mvc.ViewPage<MiniMain.ViewModel.ArticleViewdata>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    <%Model %>
</asp:Content>

но когда я позвонил в Mode, Html, Viewdata, у меня не было подсказок по intellisense. Не могу понять, скажите, пожалуйста, как это сделать?

Ответы [ 3 ]

2 голосов
/ 13 ноября 2009

Я понял это. Если вы создаете строго типизированное представление, вы должны добавить этот конфиг в файл web.config под путем просмотра:

<pages
    validateRequest="false"
    pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
    pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
    userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <controls>
    <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
  </controls>
</pages> 
0 голосов
/ 13 ноября 2009

Попробуйте использовать <% = Model.blah%> вместо <% Model.blah%>

0 голосов
/ 12 ноября 2009

См. Эту статью на ViewModels.

Вам нужно сделать некоторое альтернативное кодирование в asp: content вместо простого вызова <% model %> и надеяться, что intellisense сработает - вы сказали странице, что такое "модель", поэтому все, что вам нужно сделать, это начать " используйте "модель на странице.

В этом примере из статьи Стивенса выполните итерацию каждого элемента в модели и создайте список.

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">  
    <% foreach (var item in Model)    
       { %>  
        <li> <%= item.Name %> </li>  
    <% } %>  
</asp:Content> 
...