2011-04-20 5 views
1

다른 것들 중에서도 드롭 다운에 표시된 텍스트 문자열에 매핑되어야하는 int가 들어있는 mvc 형식을 사용하고 있습니다.드롭 다운을 생성하는 RenderAction?

MyViewModel 
{ 
    ...other fields... 
    int Level { get; set; } 
    ...other fields... 
} 

수준 필드에 RenderAction을 사용하고 별도 동작으로 드롭 다운을 생성 할 수 있습니까?

이 질문이 일관성 있고 커피를 끊고 내 머리가 평소와 다르지 않기를 바랍니다.

+1

같은 것을 쓸 수 있습니다 이 뷰 모델에서 항목 컬렉션을 종료합니다. 간단한 정수 속성에서 드롭 다운 목록을 어떻게 생성 할 것으로 예상합니까? –

+0

항목은 데이터베이스 호출에서 가져옵니다. 정수는 그 중 하나에 해당합니다. 뷰 모델에 드롭 다운 항목이 없기를 바라지 만, 별도의 작업으로해야합니다. 그것이 가능한지 묻는 것입니다. –

+0

드롭 다운 목록이 RenderAction에 의해 반환되는 부분보기의 일부인 경우 목록을보기 모델의 일부로 포함하는 것이 좋습니다. –

답변

1

많은 사람들이이 작업을 수행하지만,하지 (바르게 그래서) 알려 드릴 것입니다하지만 당신은 당신이 행동 방법으로 자사의 HTML 이름 속성을 받아 들일 수이 드롭 다운을 다시 사용하려는 당신이

public VMDropDown 
{ 
    IEnumerable<SelectListItem> Items{get;set;} 
    public string InputName{get;set;} 
} 

처럼 뭔가를 할 수 주장하는 경우 보기에서 매개 변수

public ActionResult(string inputName) 
{ 
    VMDropDown model = new VMDropDown(); 
    model.InpuName = inputName; 
    model.Items = //populate Text and Value property of each SelectListItem from db 
    return View(model); 

} 

당신은 당신이 드롭 누락

<:Html.Dropdown(Model.InputName, Model.Items)%> 
+0

그건 의미가 있습니다. 기본 선택은 아직 작업 매개 변수와 함께하기 쉽습니다. –

+0

당신은 어떻게 그것이 나쁜 아이디어라고 생각하니? –

+0

당신이 편집하는 속성을 포함하는 동일한 뷰 모델에 의해 드롭 다운이 생성되어야합니다. 이러한 종류의 재사용은 시스템에 원치 않는 복잡성을 가져오고,이 드롭 다운 목록 렌더링의 최신 요구를 충족시키기 위해 뷰 모델에 대한 작업 메서드 및 속성에 매개 변수를 더 추가하게됩니다. –

관련 문제