2

MVC2ソースコードに対して実行されている新しい変換されたMVC2プロジェクトがあります。私は同じ解決策でこの会話を2回行いました。

私はサイトのすべてのページで強く型付けされたビューを使用していますが、これまでのところ、ソースに対して実行されたり、強く型付けされたビューで開発されたりする問題はありません。

現在、特に1つの強く型付けされたビューでは、ジェネリックパラメーターはそのページのModelプロパティに反映されていません。

タイプTIのモデルを使用する代わりに、常にタイプオブジェクトのモデルを使用します。

動作しないページのコード:

<%@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()を渡します。

4

1 に答える 1

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>
于 2009-12-17T20:56:41.497 に答える