组合框对象列表
本文关键字:列表 对象 组合 | 更新日期: 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的初学者。
无论如何,我希望这对你有所帮助。