【问题标题】:object Model types in MVC2 using strongly typed view pages problemMVC2中的对象模型类型使用强类型视图页面问题
【发布时间】:2009-10-07 16:50:24
【问题描述】:

我有一个针对 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; }
}

不知道这里发生了什么。

如果我使用“添加视图”向导添加新视图,一切都会很好,但是这个现有页面我总是会为我的视图模型类型获得一个对象。

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

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

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

【问题讨论】:

  • 控制器代码是什么样的?
  • 我怀疑“return View();”陈述是最有可能的嫌疑人......

标签: asp.net-mvc-2 strongly-typed-view


【解决方案1】:

您应该使用新的解析器覆盖解析器。检查 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>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多