我有一个表单,其中一个字段应该是来自另一个表的对象(0或更多)的集合,使用combox/multiple-select下拉菜单,建立这种情况的最佳实践是什么?例如:
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; }
}谢谢
发布于 2011-08-23 13:58:59
一种方法是在控制器中填充地址列表,并使用Html.DropDownList帮助器创建下拉列表。
例如:
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中有更好的方法可以做到这一点。如果有人看到这篇文章,并知道更好的方法,请发表评论,因为我想了解我自己。我知道你可以创建一些自定义的绑定器类,我认为它们将自动完成所有这些事情,但我还没有用MVC做到这一点。我自己是MVC的初学者。
无论如何,我希望这会有一点帮助。
https://stackoverflow.com/questions/7150221
复制相似问题