组合框对象列表

本文关键字:列表 对象 组合 | 更新日期: 2023-09-27 18:06:25

我有一个表单,其中一个字段应该是对象的集合(0或更多)从另一个表使用combox/多重选择下拉,什么是建立这个的最佳实践?例句:

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。下拉列表帮助器创建下拉列表。

例如:

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

在你的视图中(Razor语法):

@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>

您可以对选中的地址ID列表做任何您需要的操作。我知道很可能有一个更好的方法用MVC来做到这一点。如果有人看到这个,知道一个更好的方法,请评论,因为我想知道自己。我知道你可以创建一些自定义binder类我认为它们会自动完成所有这些东西,但我还没有讲到MVC。我自己,是MVC的初学者。

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