8

MVC2アセンブリを使用してMVC1アプリケーションを問題なく実行できますか?一部のサードパーティツールがMVC2で壊れていることを理解していますが、他のツールを使用していないと仮定しましょう。

4

3 に答える 3

7

重大な変更がありました。

1.0プロジェクトを2.0で実行したい場合は、さまざまな場所で物事を探します。したがって、アプリケーションを2.0に移行する必要があります。

「壊れる」可能性のある変更は次のとおりです(プレビュー2の時点で現在)。

プレビュー2での変更

ヘルパーがMvcHtmlStringオブジェクトを返すようになりました

ASP.NET 4の新しいHTMLエンコード式構文を利用するために、HTMLヘルパーの戻り値の型が。MvcHtmlStringではなくなりましたstring。ASP.NET MVC2とASP.NET3.5の新しいヘルパーを使用する場合、HTMLエンコード構文を利用できないことに注意してください。新しい構文は、ASP.NET4でASP.NETMVC2を実行する場合にのみ使用できます。

JsonResultHTTPPOSTリクエストにのみ応答するようになりました

情報開示の可能性があるJSONハイジャック攻撃を軽減するために、デフォルトでは、JsonResultクラスはHTTPPOSTリクエストにのみ応答するようになりました。オブジェクトを返すアクションメソッドへのAJAXGET呼び出しは、JsonResult代わりにPOSTを使用するように変更する必要があります。必要に応じて、の新しいJsonRequestBehaviorプロパティを設定することにより、この動作をオーバーライドできますJsonResult。潜在的なエクスプロイトの詳細については、PhilHaackのブログのブログ投稿JSONHijackingを参照してください。

のModelおよびModelTypeプロパティセッターModelBindingContextは廃止されました

新しい設定可能なModelMetadataプロパティがModelBindingContextクラスに追加されました。新しいプロパティは、モデルとModelTypeプロパティの両方をカプセル化します。Modelおよびプロパティは廃止されましたModelTypeが、下位互換性のために、プロパティゲッターは引き続き機能します。ModelMetadataそれらは値を取得するためにプロパティに委任します。

プレビュー1の変更

DefaultControllerFactoryクラスの変更は、それから派生したカスタムコントローラーファクトリを壊します

この変更は、から派生したカスタムコントローラファクトリに影響しますDefaultControllerFactory。DefaultControllerFactoryクラスは、RequestContextプロパティを削除し、代わりにリクエストコンテキストインスタンスを保護された仮想メソッドGetControllerInstanceとに渡すことで修正されましたGetControllerType

カスタムコントローラーファクトリは、ASP.NETMVCアプリケーションに依存性注入を提供するためによく使用されます。

ASP.NET MVC 2をサポートするようにカスタムコントローラーファクトリを更新するには、メソッドの署名を新しい署名と一致するように変更し、プロパティの代わりに要求コンテキストパラメーターを使用します。

「エリア」は予約済みのルート値キーになりました

ルート値の文字列「area」は、「controller」や「action」と同じように、ASP.NETMVCで特別な意味を持つようになりました。1つの意味は、HTMLヘルパーに「area」を含むルート値ディクショナリが提供されている場合、ヘルパーはクエリ文字列に「area」を追加しなくなるということです。

エリア機能を使用している場合は{area}、ルートURLの一部として使用しないでください。

既知の問題点

[強い型のビューを作成する]チェックボックスがオンで、[空]以外の[コンテンツの表示]が選択され、存在するタイプに[ビュー]データクラスのタイプ名が指定されている場合、[ビューの追加]ダイアログボックスはNullReferenceExceptionをスローします。タイプ名を指定するときは、ドロップダウンリストを使用してタイプ名を選択するか、完全修飾タイプ名を入力してください。存在しないタイプの場合は、[コンテンツの表示]を[空]に設定する必要があります。

于 2010-02-04T19:14:28.347 に答える
1

このドキュメントをチェックしてください。重大な変更について学習します:http: //go.microsoft.com/fwlink/ ?LinkID = 157072

于 2010-02-04T19:16:32.070 に答える
1

私を悩ませた1つの落とし穴は、モデルのすべてのフィールドが常に投稿で検証されるようになったことです。

変更については、BradWilsonがここで説明しています。

Steve Andersonのブログ投稿では、この問題と私のお気に入りの解決策(カスタムバリデーターを使用)について説明しています。

于 2010-04-13T14:33:32.743 に答える