1

DropDownListFor に Id の代わりにオブジェクトをポストバックするように指示する方法はありますか? 次のコードがあります。

public class Foo
{
    public int SelectedProductId { get; set; }

    public decimal MonthlyIncome { get; set; }

    public IEnumerable<Product> Products { get; set; }
}

@using(Html.BeginForm())
{
    @Html.DropDownListFor(x => x.SelectedProductId, new SelectList(Model.Products, "Id", "Name"))
    <input type="submit" value="Submit"/>
}

これはうまくいきます。しかし、私のモデルでは、SelectedProductId の代わりに SelectedProduct が必要です。ID の代わりにオブジェクト インスタンスを返すように MVC に指示することは可能ですか?

ありがとう。

4

2 に答える 2

0

インターネットは信頼できないゾーンです。ほとんどの人は、あなたが説明しているようなフォーム投稿からオブジェクトのデータ全体を返すことを望んでいません。

たとえば、製品クラスに Price 値がある場合、誰かがフォームのポストバック値を改ざんして、価格を $100 から $1 に変更することを妨げるものは何もありません。

したがって、ほとんどの人はオブジェクト ID を返し、信頼できるソースからその値を取得します。

ただし、ユーザーが選択したときに製品全体を本当にポストバックしたい場合は、選択ボックスの値として製品の JSON エンコード表現を使用できます。

于 2013-09-09T03:44:59.717 に答える