2009-10-14 2 views
0

내 선택 목록 상자에서 각 옵션의 값을 지정하고 싶지만 HTML 도우미로 생성하고 있습니다.asp.net mvc에 "value"를 지정하는 방법 Html 도우미 droplist

그래서 내가 가진이

<%= Html.DropDownList("DropDownList") %> 

// 컨트롤러 그래서

ViewData["DropDownList"] = new SelectList(MyClass.GenerateListBox()); 

// MyClass 

     public static List<string> GenerateListBox() 
     { 
      List<string> listBox= new List<string>(); 
      listBox.Add("Bye"); 
      listBox.Add("hi"); 
      listBox.Add("something"); 

      return listBox; 
     } 

내가 selectList의는 "stringDataField"가지고 있지만 그것이 내가 무엇을 이제 정말 확실 목록 만 stringnot 것을 볼 바꾸다.

다른 종류의 목록을 만들어야합니까?

감사

답변

1

사용하는 대신이 생성자 : 나는 selectList의 생성자를 사용하는 것이 어떻게

ViewData["DropDownList"] = new SelectList(GenerateListBox(), "Value", "Text"); 

public static List<SelectListItem> GenerateListBox() 
{ 
    List<SelectListItem> listBox = new List<SelectListItem>(); 
    listBox.Add(new SelectListItem { Text = "bye", Value = "byeValue" }); 
    listBox.Add(new SelectListItem { Text = "hi", Value = "hiValue" }); 
    listBox.Add(new SelectListItem { Text = "something", Value = "somethingValue" }); 

    return listBox; 
} 
+0

아, 이것이 내가 찾고있는 것입니다. 나는 당신이했던 것과 똑같은 일을했지만 constructor에 "Value", "Text"를 넣지 않았습니다. 네가해야할 이상한 일이야. 나는 ViewData [ "DDL"] = (IEnumerator) GenerateListBox()가 대신 생성자를 사용한다는 것을 알지 못했기 때문에 또 다른 질문이 있습니다. 왜? 목록 IEnumerator 구현하는 줄 알았지? – chobo2

+0

공용 인터페이스 IList : ICollection, IEnumerable 그래서이 캐스트를 수행하는 것이 좋습니다. 하지만 왜 드롭 다운리스트와 함께 작동하는지 모르겠다 .... – Francisco

0

SelectList constructor that takes two strings를 사용합니다.

특히 문자열 목록을 제공하는 대신 DisplayName 및 Value 속성 (예 : KeyValuePair<String, String>)이있는 개체의 목록을 지정하고 좀 더 구체적으로 지정하는 것이 좋습니다. 해당 속성의 이름을 전달하십시오 그 생성자에게. 그러면 DataTextField 및 DataValueField 속성이 설정됩니다.

편집는 : 내 말은 대신 GenerateListBox 방법은 List<String>를 반환하고, 당신이이 List<YourClass>을 반환해야하고, 표시 이름 및 값에 대한 속성을 가진 YourClass 클래스를 만드는 것입니다.

+0

. 마찬가지로 나는 각 "가치"가 달라 지길 원합니다. 그리고 selectList를 가지고 어떻게 문자열 목록을 취해 선택 목록을 만들지. 그래서 나는 값의 문자열 목록을 어떻게 전달해야 할 것인가. – chobo2