2014-07-22 5 views
0

여러 범주 (목록에 미리 정의되어 있음)가있는 회사 개체의 편집 페이지를 만드는 방법을 찾고 있습니다. ViewBag을 통해 전송되는 목록이 있고 ViewModel을 사용하여 배열의 Create 페이지에서 사용자가 선택한 범주가 있습니다.목록 상자의 여러 기본 선택 항목

ListBox에 배열의 여러 값을 미리 채우는 방법을 알아낼 수 없습니다. jQuery로 놀고 있었고 값 중 하나를 선택할 수있었습니다. 그러나 하나 이상의 값을 시도 할 때 아무것도 표시되지 않습니다. 어떤 아이디어?

@Html.ListBox("Category", new SelectList(ViewBag.Category, "Text", "Value")) 

답변

2

SelectListItem 객체는이를 표시하는 Selected 속성이 있습니다. 그래서 나는 그것이 당신이 SelectList을 만드는 방법에 달려 있다고 생각합니다. 현재이 작업을 수행 : 작동하지만, 당신에게 개별 SelectListItem의 아무런 제어 할 수없는

new SelectList(ViewBag.Category, "Text", "Value") 

합니다. SelectList을 만드는 대신 IEnumerable<SelectListItem>using the same method overload을 만들 수 있습니다. 처음에는 다음과 같이 보일 수 있습니다.

ViewBag.Category.Select(c => new SelectListItem 
{ 
    Text = c.Text, 
    Value = c.Value 
}); 

이 시점에서 개별 항목에 대한 제어 권한이 있습니다. 이제 어떤 것을 선택해야하는지 결정하는 것입니다. 어떻게 결정합니까? 그것은 Category 객체의 속성입니까? 이런 식으로 뭔가가

ViewBag.Category.Select(c => new SelectListItem 
{ 
    Text = c.Text, 
    Value = c.Value, 
    Selected = c.Selected 
}); 

아니면 다른 어떤 조건을? :? : 당신이 당신에게 달려있다, 그리고 이상적으로 논리적 백업 모델에 추가 할 수있는 뭔가가 여기에 사용되는 결정 방법

ViewBag.Category.Select(c => new SelectListItem 
{ 
    Text = c.Text, 
    Value = c.Value, 
    Selected = c.SomeValue == SomeCondition 
}); 

.

+0

흥미 롭다. 그런 식으로 생각하지 않았다. 내가 선택한 것들을 어떻게 결정해야하는지에 관해서는, 내가 선택해야하는 값들과 함께 View에 배열을 가지고 있습니다. @ Html.ListBox ("Category", 새로운 MultiSelectList (ViewBag.Category, "Text", "Value", "Array values ​​here"))와 같은 것을 생각하고 있습니다. 그게 아직 작동 할 지 모르겠다. –