2009-10-07 27 views
2

我有一个运行MVC2源代码的新转换MVC2项目。我已经在同一个解决方案上做了两次这样的谈话。对象使用强类型查看页面的MVC2中的模型类型问题

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

现在在一个强类型视图中,通用参数没有被反映在该页的Model属性中。

而不是有一个类型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()。

+0

什么呢控制器代码是什么样子? – grenade 2009-10-07 16:58:54

+0

我怀疑“返回视图();”声明是最可能的嫌疑...... – grenade 2009-10-07 17:00:16

回答

5

你应该用新的覆盖解析器。在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> 
+0

这里也有一些信息: http://weblogs.asp.net/leftslipper/archive/2009/10/19/migrating-asp-net-mvc-1-0-应用到ASP净MVC-2.aspx – dipyalov 2009-12-18 09:13:51