为什么我不能在强类型页面中调用Model和ViewData以及Html?

时间:2009-11-12 11:31:48

标签: asp.net-mvc viewdata typed

我创建了一个新的强类型视图,如下所示:

<%@ 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>

但是当我打电话给模式,Html,Viewdata时,却没有智能感知。我无法理解,请告诉我该怎么做?

3 个答案:

答案 0 :(得分:2)

我已经想到了。如果您创建一个强类型视图,您应该将此配置添加到View路径下的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> 

答案 1 :(得分:0)

See this article on ViewModels.

你需要在asp:content中做一些替代编码,而不是只调用<% model %>并希望intellisense可以工作 - 你告诉页面“模型”是什么,所以你需要做的就是开始在页面上“使用”模型。

在这个例子中,来自Stephens的文章,迭代模型中的每个项目并构建一个列表。

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

答案 2 :(得分:0)

尝试使用&lt;%= Model.blah%&gt;而不是&lt;%Model.blah%&gt;