はASP.NET MVC1に転送に対応ASP.NET MVC2?
-
18-09-2019 - |
質問
でもMVC1を使ってアプリケーションをMVC2センブリーズ?しるばかりではなく第3者ツールをしていたものがMVC2が、そんなものを使用その他のツールです。
解決
があった 重大な変更.
1.0 プロジェクトを 2.0 で実行したい場合、プロジェクトはさまざまな場所にあるものを探します。 したがって、アプリケーションを 2.0 に移行する必要があります。.
「壊れる」可能性のある変更は次のとおりです (プレビュー 2 の時点)。
プレビュー 2 での変更点
ヘルパーは、 MvcHtmlString
物体
ASP.NET 4 の新しい HTML エンコーディング式構文を利用するために、HTML ヘルパーの戻り値の型は次のようになりました。 MvcHtmlString
の代わりに string
. 。ASP.NET MVC 2 と ASP.NET 3.5 の新しいヘルパーを使用する場合は、HTML エンコーディング構文を利用できないことに注意してください。新しい構文は、ASP.NET 4 で ASP.NET MVC 2 を実行する場合にのみ使用できます。
JsonResult
HTTP POST リクエストにのみ応答するようになりました
情報漏洩の可能性がある JSON ハイジャック攻撃を軽減するために、デフォルトでは、 JsonResult
クラスはHTTPのみに応答するようになりました POST
リクエスト。AJAX GET は、アクション メソッドを呼び出して、 JsonResult
代わりに POST を使用するようにオブジェクトを変更する必要があります。必要に応じて、新しい設定を行うことでこの動作をオーバーライドできます。 JsonRequestBehavior
の財産 JsonResult
. 。潜在的なエクスプロイトの詳細については、Phil Haack のブログのブログ投稿「JSON Hijacking」を参照してください。
Model および ModelType プロパティ セッター ModelBindingContext
時代遅れです
新しい設定可能 ModelMetadata
プロパティがに追加されました ModelBindingContext
クラス。新しいプロパティは、モデルと ModelType
プロパティ。とはいえ、 Model
そして ModelType
プロパティは廃止されました。下位互換性のために、プロパティ ゲッターは引き続き機能します。彼らはに委任します ModelMetadata
プロパティを使用して値を取得します。
プレビュー 1 の変更点
DefaultControllerFactory
クラスの変更により、クラスから派生したカスタム コントローラー ファクトリが破壊される
この変更は、から派生するカスタム コントローラー ファクトリに影響します。 DefaultControllerFactory
。DefaultControllerFactory クラスは、 RequestContext
プロパティを使用し、代わりにリクエスト コンテキスト インスタンスを保護された仮想メソッドに渡します。 GetControllerInstance
そして GetControllerType
.
カスタム コントローラー ファクトリは、ASP.NET MVC アプリケーションに依存関係の挿入を提供するためによく使用されます。
ASP.NET MVC 2 をサポートするようにカスタム コントローラー ファクトリを更新するには、新しい署名に一致するようにメソッド シグネチャを変更し、プロパティの代わりに要求コンテキスト パラメーターを使用します。
「エリア」は予約済みのルート値キーになりました
Route 値の文字列「エリア」は、「コントローラー」や「アクション」と同じように、ASP.NET MVC で特別な意味を持つようになりました。1 つの意味は、HTML ヘルパーに「エリア」を含むルート値ディクショナリが提供されている場合、ヘルパーはクエリ文字列に「エリア」を追加しなくなります。
エリア機能を使用している場合は、必ず使用しないでください。 {area}
ルート URL の一部として。
既知の問題点
[厳密に型指定されたビューを作成する] チェック ボックスがオンになっており、[空] 以外の [コンテンツの表示] が選択されており、存在する型に対して View データ クラスの型名が指定されている場合、[ビューの追加] ダイアログ ボックスは NullReferenceException をスローします。タイプ名を指定する場合は、ドロップダウン リストを使用してタイプ名を選択するか、完全修飾タイプ名を入力します。存在しないタイプの場合は、「コンテンツの表示」を「空」に設定する必要があります。
他のヒント
この文書をチェックしてください。あなたは重大な変更について学びます: http://go.microsoft.com/fwlink/?LinkID=157072する
一gotchaと噛まれたすべての分野でのモデルは常に検証されいています。
この変更に記載するブラッド-ウィルソン こちらの.
スティーブ-アンダーソンのブログ を記述する問題は自分の好きなソリューション(カスタムバリデータ).