2014-03-12 1 views
0

데이터 주석을 사용하여 드롭 다운 목록을 만들려면 어떻게해야합니까?편집기를 사용하는 동안 드롭 다운 목록을 만들 수 있습니까?

@Html.EditorForModel(Model) 

내 현재의 모델은 다음과 같습니다 :

public class ContactModel 
    { 
     public string ContactType { get; set; } 
     public IList<SelectListItem> ContactTypeOptions 
     { 
      get 
      { 
       return new List<SelectListItem>() 
     { 
      new SelectListItem(){Text = "Options"} 
     }; 
      } 
     } 
     [Required(AllowEmptyStrings = false)] 
     [MinLength(15)] 
     [DataType(DataType.MultilineText)] 
     public string Message { get; set; } 
    } 

나는 마크 업을 내가 사용하고 드롭 다운 목록을 생성 할 있도록 설정하는

@Html.DropDownListFor(x=>x.ContactType, Model.ContactTypeOptions) 

에 의해 생성 달성하고자하는

업데이트 됨 부분보기를 사용하고 싶지 않습니다. 옵션의 목록과 ContactType.SelectedValue 당신의 처음에 선택한 값이 될 수

public class ContactModel 
{ 
    [UIHint("_DropDownList")] 
    public SelectList ContactType { get; set; } 
} 

세트 (컨트롤러)에 ContactType.Items :

답변

0

당신이 뭔가를 시도 할 수 있습니다.

@model SelectList 

@Html.DropDownListFor(m => m.SelectedValue, Model) 

당신은 다음 @Html.EditorFor(m => m.ContactType)을 사용하고 드롭 다운을 얻을 수 있어야합니다 :

는 그런 부분보기 _DropDownList.cshtml을 정의합니다. 그리고 어디서나 재사용 할 수 있습니다!

@Html.EditorFor(m => m.Property) 일 때 요즘에는이 동작을 꺼낼 수도 있습니다. m.PropertySelectList입니다. 그 중 하나에 확실하지 않습니다.

당신이 당신의 ContactModelEditorForModel()를 사용 찾고 있다면, 당신은 단지 ContactModel.cshtml라는 편집기 템플릿을 생성 할 수 있습니다 :이 이미 입력 된 뷰에서 @Html.EditorForModel()로 호출 할 것을

@model ContactModel 

@Html.DropDownListFor(m => m.ContactType, 
    new SelectList(Model.ContactTypeOptions, Model.ContactType)) 

ContactModel - 오버로드에서 매개 변수로 전달 된 객체 EditorForModel(Object)은 모델 객체에 대해 이 아닌입니다. EditorForModel은 항상 뷰 모델에 대한 편집기 템플릿을 렌더링합니다.

+0

좋은데 이드는 에디터를 사용하지 못하게하고 있습니다. – cpoDesign

+0

이것이 원하는 작업을 수행하지 못하면 덜 모호해 야합니다. –

+0

미안하지만 내 의견을 읽는 것이 의미가 없습니다. 부분보기를 사용하지 않고 같은 방법으로 드롭 다운 목록을 표시하고 싶습니다. 길은 부분적인 해결책이며, 부분보기를 생성해야하므로 마음에 들지 않습니다. 여전히 렌더링, 또한 드롭 다운 목록을 렌더링하고 부분보기를 사용하지 않는 기존 코드를 수정해야합니다. 이로 인해 실제로 전체적인 부분 뷰를 만드는 것보다 실제로 많은 작업이 필요하다는 결론이 나옵니다. 어쨌든 시도하는 Thnx – cpoDesign

관련 문제