2012-01-26 24 views
0

を表示するためにMVCのDropDownListの取得します。今、私はクラスにマッピングされているエンティティ(このクラスは変更されていないので、私はそれが以前にどのように働いたのか失われている)にToStringを呼び出すことが許可されていないため、Googleが教えているエラーをスローします。そこで、CouponIdStrという名前のプロパティを追加しました。これは文字列表現です。これはうまくいかない(プロパティがDBにマップされていないb/cを爆破する)。私は値を等しいstring.Empty + a.CouponId(C#は文字列として連結するため)を作ってみました。それは爆破する。は、私はこのコードを持って選択した項目

だから私はこれを試してみました:

@Html.DropDownList("ddlCouponsAppointment", 
    new SelectList(Model.Coupons, 
     "Name", 
     "CouponId", 
     Model.CouponForAppointmentReminders.CouponId), 
    "None", 
    new { @class = "normalcell" }) 

これは動作しますが、選択した項目を表示しません。誰にも何か提案はありますか?

+0

あなたの2番目のコードブロックでは、私は見ることができませんSelected =(a.CouponId == Model.CouponForAppointmentReminders.CouponId)@ Html.DropDownListに何かを選択するとどうなりますか? –

+0

あなたは何が起こっているのか分かりません。 SelectListコンストラクタは、選択された値のパラメータをとります。名前とクーポンが間違った方向にあることが判明しました。私は答えを投稿しようとしましたが、私はそうすることはできません(私は「回答」をクリックして閲覧したので、回答は表示されませんでした)。 。それでも私が見ることができるコードの最初のブロックがなぜ機能しないのかを知りたいです。 – cgraus

答えて

1

ステップ1が選択された値を持っているのViewModelを作成

そのViewModelには、ステップ2はあなたのビューで、ステップ3

public class ViewModel {  
    public int Selected {get;set;} 
    public IEnumerable<Option> Options {get;set;} 
} 

選択リストにしたい項目のリストを持って、 DisplayForメソッドを使用してください

Html.DisplayFor(m => m.Selected, new SelectList(Model.Options, "Id", "Display")); 

ドロップダウンがレンダリングされると、選択した値が選択されます。

Good Luck!

関連する問題