2009-10-07 72 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