2011-08-22 114 views
1

我有一个表单,其中一个字段应该是另一个表中使用combox/multiple-select下拉列表的对象集合(0或更多),建立此操作的最佳实践是什么? e.g:组合框对象列表

public class Person{ 
    public int PersonId { get; set; } 
    public string PersonName { get; set; } 

    public virtual ICollection<Address> Addresses { get; set; } 
    ///or 
    public IList<Address> Addresses { get; set; } 
    ///or 
    public IEnumerable<Addresses > Addresses { get; set; } 
} 

感谢

这样做是填充在控制器中您的地址列表,并使用Html.DropDownList帮手下来创建下降

回答

2

的一种方式。

例如:

public ActionResult Index() 
{ 
    var addressList = <YourAddressListHere>; 
    ViewData["Addresses"] = new SelectList(addressList, "<ValueProperty>", "<NameProperty>"); 
    return View(); 
} 

而在你的视图(剃刀语法):

@Html.DropDownList("AddressDropDown", (ViewData["Addresses"] as SelectList)) 

还有Html.ListBoxFor和Html.ListBox助手,如果你想做多选。相同的基本方法适用。 (编辑) 对不起,我的误解。

要获得被选中的保存/编辑/插入功能时,您可以添加控件的名称为你“POST”处理参数,并提取它们的地址列表。

[HttpPost] 
     public ActionResult Edit(int[] addressList, <your parameters>) 
..... 

与UI代码:

<div class="editor-field">  
    @Html.ListBox("addressList") 
</div> 

你可以做任何你需要选择该地址标识的名单。我知道用MVC做这件事更有可能是一种更好的方式。如果有人看到这一点,并知道更好的方式,请评论,因为我想知道我自己。我知道你可以创建一些自定义粘合剂类,我认为它会自动完成所有这些东西,但是我还没有用MVC获得这些东西。我自己是MVC的初学者。

无论如何,我希望这会有所帮助。


+0

感谢您的答复。问题不在于下拉,我能够确定这一点。即时通讯试图在数据库中存储“列表”,是否可以在C#MVC3? –

+0

我根据对问题的误解编辑了“答案”。希望这可以帮助。 – kingrazor