2012-03-05 10 views
0

私は、フォームはそれがヌル提出された提出されたドロップダウンリストを持っている...私のドロップダウン選択が送信されないのはなぜですか?

HTML:

@Html.DropDownListFor(c => Model.HowOftenCar, Model.HowOftenCar, new { id = "CompDrop" }) 

モデル:

public IEnumerable<SelectListItem> HowOftenCar { get; set; } 

コントローラー:

IList<string> HowOftenCar = new List<string>(); 
HowOftenCar.Insert(0, "More than once a week"); 
HowOftenCar.Insert(1, "Once a month"); 
HowOftenCar.Insert(2, "Once a year"); 
model.HowOftenCar = HowOftenCar.Select(c => new SelectListItem() 
{ 
    Text = c, 
    Value = c 
}); 

投稿:

[HttpPost] 
public ActionResult Index(Competition model) 
{ 
    if (ModelState.IsValid) 
    {} 
} 

私はまた、あなたが正しくDropDownListForを使用していない...

@Html.DropDownListFor(c => Model.HowOftenCar, new SelectList(Model.HowOftenCar, "Value","Text"), new { id = "CompDrop" }) 

答えて

0

を試してみました。

最初のパラメータは、入力するモデルのプロパティです。モデルのHowOftenCarプロパティを設定する場合は、値の型にする必要があります。この場合、文字列のように見えます。

public string HowOftenCar { get; set; } 

第2パラメータは選択肢のリストです。あなたはその権利を持っていますが、あなたが設定しようとしているプロパティ以外のものでなければなりません。

IList<string> HowOftenCarChoices = new List<string> 
{ 
    "More than once a week", 
    "Once a month", 
    "Once a year" 
}; 

model.HowOftenCarChoices = HowOftenCar.Select(c => new SelectListItem() 
{ 
    Text = c, 
    Value = c 
}); 

それでは、あなたはDropDownListForが自動的ラムダに基づいて、それをHowOftenCarのIDを与えるので、あなたは、idプロパティを必要としない

@Html.DropDownListFor(m => m.HowOftenCar, Model.HowOftenCarChoices) 

注意になってしまいます。

+0

申し訳ありませんが... ur設定モデル.HowOftenCarChoises、これはモデルにありません? HowOftenCarだけですか? – Beginner

+0

私はちょうどモデルにそれをビューに取得するためにそれを置く。必要に応じてViewDataまたはViewBagに配置することができます。または、ビュー自体に選択肢を定義します。いずれにしても、そのオブジェクトをDropDownForに渡す必要があります。 – bhamlin

関連する問題