2011-08-22 124 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