2010-07-30 2 views
3

지금까지 내가 말할 수있는 등의 ASP.NET MVC보기에 DropDownList로를 만드는 3 가지 방법이 있습니다 :ASP.NET MVC : DropDownList로 -보기에서 데이터 소스, selectedItem가, 인라인 코드 액세스의

  1. 핸드 코드 HTML 수동
  2. <asp:DropDownList ID="someID" runat="server"></asp:DropDownList>
  3. <%= Html.DropDownList("someID") %>

나는 우리 모두가 # 1 (일반적으로) 시간 낭비 동의 수 있다고 생각합니다.

2 번을 사용하면 "WebForms"방식으로 표시되지만보기를 작성하는 경우 생성 된 인라인 코드를 통해 만든 객체에 액세스 할 수 있다는 장점이 있습니다. 그 후에. 예 :

<asp:DropDownList ID="someID" runat="server"></asp:DropDownList> 
<% 
    someID.SelectedIndex = 0; 
    string someString = someID.SelectedValue.ToString(); 
%> 

# 3에서는 가능하지 않습니다.

# 3 (HTML 도우미 방식)에 대해 알아 낸 멋진 점은 문자열을 전달하면 Name 및 ID를 문자열로 설정하고 문자열을 사용하여 ViewData 사전을 검색한다는 것입니다. 호출 컨트롤러에 추가 된 ViewData 사전에 추가 된 SelectList를 기반으로 DropDownList의 각 태그를 자동으로 생성합니다. <asp:DropDownList> 또는 내가 수동으로 그들에게 자신을 만들어야 할 경우 태그를 자동으로 생성 할 수있는 방법이 있다면 내 인생

// controller code 
ViewData["someID"] = new SelectList(someMethod().ToList()); 

, 나는 알아낼 수 없습니다.

일반적으로 ASP.NET MVC에서 DropDownList를 구현하는 가장 좋은 방법은 무엇입니까?

+0

을 MVC에서 사용해서는 안됩니다. –

+0

정성스럽게 케어? 나는 당신을 믿지 않는다는 것이 아니라 왜 그 이유를 알고 싶습니다. – Pretzel

답변

1
<%= Html.DropDownList("name", new SelectList(someEnumerable, "valueProperty", "textProperty")) %> 

여기서 someEnumerable은 viewModel의 속성입니다. 예를 들어

:

class Person 
{ 
    int id; 
    string name; 
} 

class myVM 
{ 
    IEnumerable<Person> people; 
} 

<%= Html.DropDownList("name", new SelectList(Model.people, "id", "name")) %> 

편집는 컨트롤러에서 selectList의을 해달라고, 이것은 단지 뷰 모델에 IEnumerable을 보내보기 특정 코드 및보기에 속한다.

+0

좋아, 나는 이것을 줄 것이다. – Pretzel

관련 문제