首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合框对象列表

组合框对象列表
EN

Stack Overflow用户
提问于 2011-08-23 00:01:57
回答 1查看 197关注 0票数 1

我有一个表单,其中一个字段应该是来自另一个表的对象(0或更多)的集合,使用combox/multiple-select下拉菜单,建立这种情况的最佳实践是什么?例如:

代码语言:javascript
复制
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; }
}

谢谢

EN

回答 1

Stack Overflow用户

发布于 2011-08-23 13:58:59

一种方法是在控制器中填充地址列表,并使用Html.DropDownList帮助器创建下拉列表。

例如:

代码语言:javascript
复制
public ActionResult Index()
{
   var addressList = <YourAddressListHere>;
   ViewData["Addresses"] = new SelectList(addressList, "<ValueProperty>", "<NameProperty>");
   return View();
}

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

代码语言:javascript
复制
@Html.DropDownList("AddressDropDown", (ViewData["Addresses"] as SelectList))

如果你想进行多选,还有Html.ListBoxFor和Html.ListBox助手。同样的基本方法也适用。

(编辑)对不起,我误会了。

要获得所选地址的列表,您可以将控件名称作为参数添加到"POST“处理程序中,并在保存/编辑/插入功能期间提取它们。

代码语言:javascript
复制
[HttpPost]
        public ActionResult Edit(int[] addressList, <your parameters>)
.....

UI代码如下:

代码语言:javascript
复制
<div class="editor-field">    
    @Html.ListBox("addressList") 
</div>

您可以根据需要对所选的地址ID列表执行任何操作。我知道在MVC中有更好的方法可以做到这一点。如果有人看到这篇文章,并知道更好的方法,请发表评论,因为我想了解我自己。我知道你可以创建一些自定义的绑定器类,我认为它们将自动完成所有这些事情,但我还没有用MVC做到这一点。我自己是MVC的初学者。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7150221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档