1

MVC4へのアップグレード中に問題が発生しましたが、他の誰かがこの問題を確認したかどうか、およびそれを回避する方法を考えていました。IDictionary、Dictionary、またはRouteValueDictionaryをアクションのパラメーターリストに配置するたびに、そのMVC呼び出しのルート値が渡されます。

この問題を再現するには、デフォルトのインターネットアプリケーション設定を使用してMVC4 Webプロジェクトを作成し、追加します。

IDictionary<string, object> myDictionary = null 

インデックスコントローラのパラメータリストに移動し、メソッド内にブレークポイントを設定します。IDictionaryパラメーターにルート値がモデルバインダーによって入力されていることがわかります。

これをオフにする、またはこれを回避するにはどうすればよいですか?

4

1 に答える 1

1

MVC4 のバグ レポートを調べたところ、Dictionary<> モデル バインダーで次の問題が追跡されているようです。

http://aspnetwebstack.codeplex.com/workitem/373

回避策は、パラメータ リストから Dictionary を削除し、次の手順を実行することです。

[HttpPost]
public void Index(FormCollection form)
{
     var values = new Dictionary<string, object>();
     this.UpdateModel(values, "values");
}

うまくいけば、これは他の誰かに役立ちます。今、彼らがそれを修正するだけなら。誰もがより良い回避策を持っていますか?

于 2012-11-12T20:32:33.393 に答える