2012-07-13 3 views
0

약 3 개 항목이있는 테이블이 있습니다. 해당 테이블을 사용하여 Dropdown List을 채우고 싶습니다. 하지만 드롭 다운 목록에 2 개의 항목 만 표시하고 싶은 조건이 있습니다. 어떻게 할 수 있습니까?DB 테이블 항목이있는 드롭 다운 목록 채우기

+0

무엇이 조건입니까? 이 두 항목을 모두 보여주고 싶습니까? 2 위? – Shyju

+0

not top 2. 동일한 테이블에 대해 여러 개의 드롭 다운을 사용해야하지만 일부보기에서는 모든 테이블 항목이 필요하지 않습니다. – nebula

+0

Darin의 답변을 확인하십시오. 귀하의 기준에 따라 2 개의 항목을 얻으려면 Where 절을 변경해야 할 수도 있습니다. – Shyju

답변

0

당신은보기 모델을 사용할 수 있습니다

public class MyViewModel 
{ 
    public string SelectedItemId { get; set; } 
    public IEnumerable<SelectListItem> Items { get; set; } 
} 

를하고 요구 사항이 몇 가지 조건에 따라 다른 두 항목을하는 경우 다음 분명히 (첫 번째 두 항목을 당신이 할 수 있었던 .Where() 확장 방법에 체인 .Take()를 호출하기 전에 먼저 필터링하기 위해) :

,369 :

public ActionResult Index() 
{ 
    var model = new MyViewModel(); 
    model.Items = db.Items.Take(2).ToList().Select(x => new SelectListItem 
    { 
     Value = x.Id, 
     Text = x.SomeText 
    }); 
    return View(model); 
} 

뷰는 단순히 DropDownListFor 도우미에 전화 표준 물건입니다

@model MyViewModel 
@Html.DropDownListFor(x => x.SelectedItemId, Model.Items) 
+0

문제가 있습니다. 보기는 다른 모델을 사용하여 강하게 입력됩니다. 지금 어떻게합니까? – nebula

+0

표시 모델 ('SelectedItemId' 및'Items')에 2 개의 속성을 추가하면됩니다. 그리고이 뷰 모델은 자동 생성 된 EF 클래스이기 때문에 수정할 수 없다고 말하면 도메인 모델을 뷰에 전달하고 뷰 모델을 사용해야한다는 것은 매우 나쁜 습관이라고 말합니다. 따라서이 경우에는 답변에 표시된 2 가지 속성 외에도 도메인 모델을 속성으로 캡슐화 할 수있는 래핑 뷰 모델을 정의합니다. –

관련 문제