2012-01-26 6 views
0

을 표시하려면 :MVC DropDownList로 얻기이 코드가 선택한 항목

@Html.DropDownList("ddlCouponsAppointment", 
    Model.Coupons.Select(a => new SelectListItem { 
            Text = a.Name, 
            Value = a.CouponId.ToString(), 
            Selected = (a.CouponId == Model.CouponForAppointmentReminders.CouponId) 
         }), 
    "None", 
    new { @class = "normalcell" }) 

이 나이를 위해 일했습니다. 이제는 클래스에 매핑되는 엔티티에서 ToString을 호출 할 수 없기 때문에 Google에서 알려주는 오류가 발생합니다 (이 클래스는 변경되지 않았으므로 이전에는 어떻게 작동했는지를 알 수 없습니다). 그래서 CouponIdStr이라는 문자열 표현 인 속성을 추가했습니다. 이것은 작동하지 않습니다 (b/c가 DB에 매핑되지 않습니다). 나는 값을 평등하게 string.Empty + a.CouponId (C#이 문자열로 연결하는 것처럼) 만들기를 시도했다. 그것은 폭발한다.

그래서 나는 노력이 :

@Html.DropDownList("ddlCouponsAppointment", 
    new SelectList(Model.Coupons, 
     "Name", 
     "CouponId", 
     Model.CouponForAppointmentReminders.CouponId), 
    "None", 
    new { @class = "normalcell" }) 

이 작동하지만 선택한 항목을 표시하지 않습니다. 누구든지 어떤 제안이 있습니까?

+0

두 번째 코드 블록에서 볼 수 없습니다. Selected = (a.CouponId == Model.CouponForAppointmentReminders.CouponId) 어떻게하면 @Html.DropDownList를 선택하여 무언가를 선택할 수 있습니까? –

+0

당신은 무슨 일이 일어나고 있는지 놓치고 있습니다. SelectList 생성자는 선택한 값에 대한 매개 변수를 사용합니다. 이름과 쿠폰이 잘못 나온 것 같아요. 나는 대답을 게시하려했으나 그렇게하지 않았다. (나는 '대답'을 클릭하고 브라우징해서 대답을 보지 못했다.) 그래서 이것이 나의 결심을 찾지 못했지만 결의없이 여기 앉아있다. . 여전히 내가 볼 수있는 첫 번째 코드 블록이 작동하지 않는 이유를 알고 싶습니다. – cgraus

답변

1

1 단계는 선택된 값을 갖는 뷰 모델을 만들기

그 뷰 모델에서 2 단계는 당신의보기에서 3 단계

public class ViewModel {  
    public int Selected {get;set;} 
    public IEnumerable<Option> Options {get;set;} 
} 

선택 목록에서 원하는 항목의 목록을 가지고, DisplayFor 메서드 사용

Html.DisplayFor(m => m.Selected, new SelectList(Model.Options, "Id", "Display")); 

드롭 다운이 렌더링되면 선택한 값이 선택됩니다.

행운을 빌어 요!

관련 문제