2009-10-14 64 views
0

我想为我的选择列表框中的每个选项指定一个值,但我使用html助手生成了它。如何为asp.net mvc指定“值”Html帮助器下拉列表

所以我有这个

<%= 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

使用此构造函数来代替:

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

这是我正在寻找的。我做了同样的事情,但我没有在构造函数中添加“Value”,“Text”。有点奇怪,你必须这样做。我有另一个问题,因为我不知道用构造函数我改为ViewData [“DDL”] =(IEnumerator)GenerateListBox()和那工作。为什么?我以为List实现IEnumerator? – chobo2 2009-10-14 17:40:58

+0

public interface IList:ICollection,IEnumerable 所以我认为可以做这个演员。但不知道为什么它与dropdownlist工作,但.... – Francisco 2009-10-15 16:53:02

0

使用SelectList constructor that takes two strings

具体而言,不是给它一个字符串列表,而是给它一个具有DisplayName和Value属性的对象的列表(例如,KeyValuePair<String, String>,尽管我会推荐更具体的东西),并传递这些属性的名称到那个构造函数。这将设置DataTextField和DataValueField属性。

编辑:我的意思是,与其让你GenerateListBox方法返回一个List<String>,你应该让返回List<YourClass>并作出YourClass类的显示名称和价值属性。

+0

我将如何使用选择列表的构造函数。就像我希望每个“价值”不同。以及如何让我的selectList在一个字符串列表中进行选择并生成选择列表。所以我将不得不通过一些如何获取值的字符串列表。 – chobo2 2009-10-14 00:48:44

相关问题