6

2 つのモデルを入力する必要があるフォームがあります。通常、フォームのポスト アクションで ModelBinderAttribute を使用します。

    [Authorize]
    [AcceptVerbs("POST")]
    public ActionResult Add([GigBinderAttribute]Gig gig, FormCollection formCollection)
    {
       ///Do stuff
    }

私のフォームでは、フィールドの名前はモデルのプロパティと同じです...

ただし、この場合、入力が必要な 2 つの異なるモデルがあります。

どうすればいいですか?何か案は?出来ますか?

4

3 に答える 3

9

実際...最善の方法はこれを行うことです:

public ActionResult Add([GigBinderAttribute]Gig gig, [FileModelBinderAttribute]File file) {

}

複数の属性を使用できます。

于 2009-01-27T22:22:25.683 に答える
8

このような場合、関連するさまざまなモデルをまとめるために、単一のモデルタイプを作成する傾向があります。

class AddModel
{
     public Gig GigModel {get; set;}
     public OtherType OtherModel {get; set;}
}

...そしてそれをバインドします。

于 2009-01-19T15:26:03.057 に答える
0

これには、UpdateModel または TryUpdateModel メソッドを使用できます。モデル、バインドするモデル、そのモデルにバインドするアイテムのプレフィックス、およびフォームを渡すことができます。たとえば、Item モデルに「Item.Value」のフォーム変数がある場合、モデルの更新メソッドは次のようになります。

UpdateMode(modelObject, stringPrefix, formCollection);

エンティティ フレームワークを使用している場合は、UpdateModel メソッドが特定の条件下で常に機能するとは限らないことに注意してください。ただし、POCO では特にうまく機能します。

于 2009-01-18T22:24:49.937 に答える