2011-01-05 12 views
1

フォームコレクション内の選択リストの値を取得できません。私は、選択リストと同じ名前の属性を持つビューモデルを作成しようとしました。選択リストとのモデル結合はどのように機能しますか?

私は正に、私が実際にモデルリストが選択リストとどのように機能するかを理解していないことを認識しています。私はちょうど次の規則が適用されると仮定しています:

  • 選択リストの名前は、バインドするモデルの属性と同じです。

それ以外は、実際には得られません。私はそれについていくつかの本を見てきましたが、彼らは無益です。

選択リストは、a)フォームコレクションとb)特定のモデルでどのように機能しますか?ここで

答えて

2

は例です:

モデル:

public class MyViewModel 
{ 
    public string SelectedItemValue { get; set; } 
    public IEnumerable<SelectListItem> Items { get; set; } 
} 

コントローラー:

public class HomeController: Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new MyViewModel 
     { 
      // TODO: Fetch those from a repository 
      Items = new SelectList(
       new[] 
       { 
        new SelectListItem { Value = "1", Text = "Item 1" }, 
        new SelectListItem { Value = "2", Text = "Item 2" }, 
        new SelectListItem { Value = "3", Text = "Item 3" }, 
       }, 
       "Value", 
       "Text" 
      ) 
     }; 
    } 

    [HttpPost] 
    public ActionResult Index(string selectedItemValue) 
    { 
     // Here you get the selected value from the dropdown 
     return ... 
    } 
} 

ビュー:

<% using (Html.BeginForm()) { %> 
    <%= Html.DropDownListFor(x => x.SelectedItemValue, Model.Items) 
    <input type="submit" value="OK" /> 
<% } %> 
+0

はい、しかし、問題は、私はHTMLを使用することはできませんです.BeginFormドロップダウンリストがapに入っているため芸術的な眺め。 – rsteckly

+0

これも私がやっていることですが、SelectListクラスはどこに当てはまりますか? ListBoxとDropDownはIEnumerable を使用するので、SelectListはどのように役立ちますか? –

関連する問題