0

我的视图模型中有一个逗号分隔的字符串:

vm.colours = "black, white, blue, green"

在我的 Razor 页面中,我想显示一个下拉列表,所以我有:

@Html.DropDownList(m => m.colours, new SelectList(Model.colours))

但是,这为字符串中的每个 LETTER 提供了一个选择列表项。

有什么办法可以修改这个,给我每种颜色的选择列表项?

谢谢,

标记

4

3 回答 3

2

目前你只发送一个字符串,它只是一个字符数组,所以在这种情况下它被解释为这样。使用Split方法来分离你想要的元素。

编辑:

检查此答案Split以获取在这种情况下使用的代码示例。

于 2013-04-15T07:42:21.533 回答
1

@Html.DropDownList(m => m.colours, new SelectList(Model.colours))

DropDownList没有接受表达式的重载。要使该代码正常工作,您需要这样做:

Html.DropDownList("give_it_a_name", new SelectList(Model.colours))

或者你的意思是使用DropDownListFor,如果是,那么你需要两件事:

  1. 将接受从下拉列表中选择的项目的属性
  2. 您的列表将用于在下拉列表中显示选项

您的视图应如下所示:

public class YourVM 
{
    public string SelectedColor{get;set;}
    public IEnumerable<string> Colors {get;set;}
}

你需要在你的控制器中有这样的东西:

var colors = "black, white, blue, green";
vm.colours = colors.Split(',');

最后在你看来:

@Html.DropDownListFor(m => m.colours, new SelectList(Model.Colors))
于 2013-04-15T07:59:56.793 回答
0

好吧,看起来颜色不是一个,IEnumerable<string>而只是一个string。由于SelectList将枚举传入的对象,这意味着在这种情况下枚举返回所有字符的字符串。请尝试使用字符串数组:

vm.colours = new string[] { "black", "white", "blue", "green" };

调用Html.DropDownList保持不变。

于 2013-04-15T07:40:46.383 回答