2011-10-17 38 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 { } 
     }