2011-08-22 7 views
1

하나의 필드가 combox/multiple-select 드롭 다운을 사용하는 다른 테이블의 개체 모음 (0 이상)이어야하는 양식이 있는데,이를 설정하는 가장 좋은 방법은 무엇입니까? 예컨대 :콤보 상자 개체 목록

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.ListBoxFor 및 Html.ListBox 도우미가

@Html.DropDownList("AddressDropDown", (ViewData["Addresses"] as SelectList)) 

. 동일한 기본 접근법이 적용됩니다.


(EDIT) 오해. 죄송합니다.

선택한 주소 목록을 얻으려면 제어 이름을 "POST"처리기의 매개 변수로 추가하고 저장/편집/삽입 기능 중에 제어 이름을 추출 할 수 있습니다. 당신이 선택되었다 주소 ID 년대의 목록이 필요 당신이 무엇을 할 수

<div class="editor-field">  
    @Html.ListBox("addressList") 
</div> 

: 같은 UI 코드와

[HttpPost] 
     public ActionResult Edit(int[] addressList, <your parameters>) 
..... 

. MVC로이 작업을 수행하는 것이 더 나은 방법 일 가능성이 높습니다. 누구든지 이것을보고 더 나은 방법을 알고 있다면 나 자신을 알고 싶기 때문에 의견을 말하십시오. 자동으로이 모든 작업을 수행 할 수있는 몇 가지 사용자 정의 바인더 클래스를 만들 수 있다는 것을 알고 있지만 MVC를 사용하여 아직까지는 얻지 못했습니다. 나 자신, MVC 초보자입니다.

어쨌든 이것이 도움이되기를 바랍니다.


+0

답장을 보내 주셔서 감사합니다. 문제는 드롭 다운이 아니고, 나는 그것을 확립 할 수 있었다. 메신저 데이터베이스에 "목록 "을 저장하려고, C# MVC3에서 할 수 있습니까? –

+0

질문에 대한 오해에서 "대답"을 편집했습니다. 희망이 도움이됩니다. – kingrazor