1

これは単純なはずですが、私はそれを見ていないので、誰かが助けてくれることを願っています (私の投稿はおそらくすべてこのように始まります)。だから私はコントローラーに入ってくるモデルを持っています。

[HttpPost]
public ActionResult Index(Policy screenModel)

更新する前に、そのモデルに固有の何かをしたいです。たとえば、次のようになります。

If (condition)
    screenModel.AgentNumber = 1000;

ここで、TryUpdateModel または ModelState.IsValid が起動する前に、screenModel を ValueProvider に戻す必要があります。そうしないと、変更によって何も起こりません。メソッドで FormCollection を受け入れる場合は、次のように簡単に実行できます。

this.ValueProvider = collection.ToValueProvider();

しかし、FormCollection を使用しない理由は他にもあります。オブジェクトを ValueProvider に戻すにはどうすればよいですか?

4

1 に答える 1

1

まず、パラメーターとして渡されたモデルでメソッドを使用する場合、TryUpdateModelまたはUpdateModelを呼び出すことは想定されていません。これらは基本的に、メソッドが呼び出される前にUpdateModelを実行します。

次に、UpdateModelは、FormsCollectionからモデルにオブジェクトをコピーするように設計されており、そこに入力したものはすべて上書きされます。

第3に、ModelStateも、メソッドが呼び出される前に更新されます。

この種のことをしたいのなら、カスタムモデルバインダーがおそらく行く方法です。

于 2012-08-13T19:37:54.190 に答える