代码之家  ›  专栏  ›  技术社区  ›  John Farrell

使用强类型视图页问题的MVC2中的对象模型类型

  •  2
  • John Farrell  · 技术社区  · 16 年前

    我有一个新的转换过的MVC2项目正在针对MVC2源代码运行。我在同一个解决方案上做了两次这个对话。

    我在网站的每个页面上都使用强类型视图,到目前为止,我还没有遇到任何针对源代码的问题,也没有使用强类型视图进行开发。

    现在在一个强类型视图上,特别是通用参数没有反映在该页的模型属性中。

    我总是有一个对象类型的模型,而不是T类型的模型。

    非工作页的代码:

    <%@Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ThingViewModel>" %>
    <%@ Import Namespace="SProject.Web"%>
    
    <asp:Content ID="Content1" ContentPlaceHolderID="PageTitleContentPlaceHolder" runat="server">
        <h2>Add Encounter <%= ViewData.Model.Browser %></h2>
    </asp:Content>
    
    <asp:Content ID="Content2" ContentPlaceHolderID="SidebarContentPlaceHolder" runat="server">
    

    视图模型:

    public class ThingViewModel
    {
        public string Browser { get; set; }
    }
    

    不知道这里发生了什么。

    如果我使用添加视图向导添加一个新视图,除了这个现有的页面之外,其他一切工作都很好,我总是为我的视图模型类型获取一个对象。

    我可以解决这个问题,只是想知道这里发生了什么?

    后台有缓存吗?只是好奇我错过了什么。

    在这种情况下,控制器正在传递一个新的thingModel()。

    1 回复  |  直到 16 年前
        1
  •  5
  •   dipyalov    16 年前

    您应该用新的解析器重写解析器。检查views文件夹中的web.config文件。

    它应该包含

    <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>
    </pages>
    

    而不是

     <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>
    
    推荐文章