49

私のデータベースにこのテーブルがあったとしましょう: Product

持っていた

ProductId
ProductName
ProductType

なんらかの理由でテキストボックスに ProductName と ProductType という名前を付けられないので、View メソッドは次のようになります

public ViewResult Test([Bind(Exclude ="ProductId")] Product)

そのため、名前が異なるため、この製品では何も一致しませんでした。

だから私はこれが Prefix の出番だと思いますが、それを使用する方法がわかりません。また、それを同時に除外する方法もありません。

誰かが私に例を挙げてもらえますか?

4

1 に答える 1

140

ビューにある場合、プレフィックスは次のように使用されます...

<select name="p.ProductType">....</select>
<input type="text" name="p.ProductName" />

次のようなことを行うことで、受信フォームをモデルのインスタンスにバインドできます

public ActionResult([Bind(Prefix="p")]Product product)

メソッドの引数に p という名前を付けた場合、MVC はこれを自動的に行うことに注意してください。

複数のエンティティを同時にバインドしようとしている場合 (例: 2 つの名前フィールド)、プレフィックスは非常に便利です。

特定のプロパティへの除外バインディングを使用するには (つまり、偽造されたフォームで ProductIds を渡さないようにするため)、除外するプロパティ名を設定するだけです。

 public ActionResult([Bind(Prefix="p", Exclude="ProductId")]Product product)

これにより、エンティティの ProductId が設定されないようになります。

Type から ProductType など、2 つの完全に異なるフィールド名をバインドする場合は、カスタム モデル バインディングを参照するか、自分で FormCollection からフィールドを取得することができます。

于 2009-08-23T11:30:05.720 に答える