0

「from」(日付から) という名前のクエリ パラメータと、From という名前のプロパティにバインドする入力があります。

私のViewModelコンストラクターでは、Fromプロパティを日付に設定しています...

これは、クエリ パラメーター名とプロパティ名が異なる場合に機能しますが、それらが同じ MVC3 である場合、いくつかの魔法がクエリ パラメーターにある値を取得し、それに対してバインドする場合、From プロパティの値は気にしません。なんで?この atuomagic は非常に多くのレベルで非常に間違っています! どうすれば無効にできますか?

編集: プロパティが取得する値は関係ありません。入力 MVC と同じ ID を持つクエリ文字列が存在する場合、その値は自動的に取得され、入力要素に割り当てられます。

4

2 に答える 2

2

電話する必要があります

ModelState.Clear();

コントローラー アクションから戻る前。

問題は、ModelState がクエリ文字列からの値を持ち、バインドが発生したときにモデルの値よりも優先されることです。

これがバグなのか機能なのかは、あなたの見方次第です... http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers -render-the-wrong-value.aspx

于 2012-01-07T01:48:30.453 に答える
0

MVC は慣例に従って機能し、値を名前でモデルにバインドします。何が起こっているのかを理解するには、Phil Haack のブログ記事「 What's the Difference between a Value Provider and Model Binder? 」を読むことをお勧めします。

名前の競合が予期しない問題を引き起こす可能性が非常に高いため、同じリクエストに同じ名前の 2 つの無関係な要素を含めることはお勧めできません。ベスト プラクティスは、これらの要素のいずれかの名前を変更して、名前の競合をなくすことです。

于 2011-10-19T12:30:42.457 に答える