我的视图模型中有一个逗号分隔的字符串:
vm.colours = "black, white, blue, green"
在我的 Razor 页面中,我想显示一个下拉列表,所以我有:
@Html.DropDownList(m => m.colours, new SelectList(Model.colours))
但是,这为字符串中的每个 LETTER 提供了一个选择列表项。
有什么办法可以修改这个,给我每种颜色的选择列表项?
谢谢,
标记
我的视图模型中有一个逗号分隔的字符串:
vm.colours = "black, white, blue, green"
在我的 Razor 页面中,我想显示一个下拉列表,所以我有:
@Html.DropDownList(m => m.colours, new SelectList(Model.colours))
但是,这为字符串中的每个 LETTER 提供了一个选择列表项。
有什么办法可以修改这个,给我每种颜色的选择列表项?
谢谢,
标记
@Html.DropDownList(m => m.colours, new SelectList(Model.colours))
DropDownList
没有接受表达式的重载。要使该代码正常工作,您需要这样做:
Html.DropDownList("give_it_a_name", new SelectList(Model.colours))
或者你的意思是使用DropDownListFor
,如果是,那么你需要两件事:
您的视图应如下所示:
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))
好吧,看起来颜色不是一个,IEnumerable<string>
而只是一个string
。由于SelectList
将枚举传入的对象,这意味着在这种情况下枚举返回所有字符的字符串。请尝试使用字符串数组:
vm.colours = new string[] { "black", "white", "blue", "green" };
调用Html.DropDownList
保持不变。