2011-10-17 47 views
1

可能我只是不知道如何谷歌,但我試圖找到一個例子,其中下拉控件是數據綁定到集合(這部分是爲我工作)然後我想將下拉選擇讀回變量。這個變量可能是該模式的一個屬性。綁定下拉選定的值回變量是我有麻煩的地方。在web表單的世界裏,這是沒有什麼大不了的,但由於某種原因,我無法使它與MVC 3一起工作。任何代碼示例或示例都將受到高度讚賞。綁定下拉選定的值到一個模型屬性

回答

4

在ASP.NET MVC中這樣做的推薦方法是使用視圖模型。當您設計一個下拉列表時,您需要在該視圖模型上使用2個屬性:一個用於綁定選定值,另一個表示將用於生成選項的值和文本集合。然後你可以使用第一個屬性來預先選擇一個給定的選項。

所以我們開始通過設計視圖模型:

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

然後填充這個視圖模型的控制器操作:

public ActionResult Index() 
{ 
    var model = new MyViewModel 
    { 
     // preselect the second item which has value=2 
     SelectedId = "2", 

     Items = new[] 
     { 
      new SelectListItem { Value = "1", Text = "item 1" }, 
      new SelectListItem { Value = "2", Text = "item 2" }, 
      new SelectListItem { Value = "3", Text = "item 3" }, 
     } 
    }; 
    return View(model); 
} 

,並在強類型的視圖中使用DropDownListFor幫手產生下拉:

@model MyViewModel 
@Html.DropDownListFor(
    x => x.SelectedId, 
    Model.Items, 
    "-- Select an Item --" 
) 
0

你可以綁定一個下拉列表VA在一個模型中如下所示:

public virtual SelectList ddlvalue 
     { 
      get 
      { 
       List<SelectListItem> list = new List<SelectListItem>(); 
       list.Add(new SelectListItem() { Text = "Yes", Value = "Y" }); 
       list.Add(new SelectListItem() { Text = "No", Value = "N" }); 
       return new SelectList(list, "Value", "Text"); 
      } 
      set { } 
     }