Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在asp.net mvc中显示下拉列表的Razor语法_Asp.net_Asp.net Mvc 3_Razor - Fatal编程技术网

在asp.net mvc中显示下拉列表的Razor语法

在asp.net mvc中显示下拉列表的Razor语法,asp.net,asp.net-mvc-3,razor,Asp.net,Asp.net Mvc 3,Razor,我的视图模型中有一个逗号分隔的字符串: vm.colours = "black, white, blue, green" 在我的Razor页面中,我想显示一个下拉列表,因此我有: @Html.DropDownList(m => m.colours, new SelectList(Model.colours)) 但是,这为字符串中的每个字母提供了一个select列表项 我有没有办法修改这个,给我一个每种颜色的选择列表 谢谢, 标记嗯,看起来颜色不是一个IEnumerable,而是一个字符

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

vm.colours = "black, white, blue, green"
在我的Razor页面中,我想显示一个下拉列表,因此我有:

@Html.DropDownList(m => m.colours, new SelectList(Model.colours))
但是,这为字符串中的每个字母提供了一个select列表项

我有没有办法修改这个,给我一个每种颜色的选择列表

谢谢,


标记

嗯,看起来颜色不是一个
IEnumerable
,而是一个
字符串
。由于
SelectList
将枚举传入的对象,因此在本例中,这意味着对返回所有字符的字符串进行枚举。请使用字符串数组进行尝试:

vm.colors=新字符串[]{“黑”、“白”、“蓝”、“绿”}


Html.DropDownList
的调用保持不变。

嗯,看起来颜色不是一个
IEnumerable
,而是一个
字符串。由于
SelectList
将枚举传入的对象,因此在本例中,这意味着对返回所有字符的字符串进行枚举。请使用字符串数组进行尝试:

vm.colors=新字符串[]{“黑”、“白”、“蓝”、“绿”}


Html.DropDownList
的调用保持不变。

此时您只发送一个字符串,它只是一个字符数组,因此在此上下文中它被解释为这样。使用
Split
方法分离所需的元素

编辑:


检查在本例中使用
Split
的代码示例。

此时您只发送一个字符串,它只是一个字符数组,因此在本上下文中它被解释为这样。使用
Split
方法分离所需的元素

编辑:

检查在这种情况下使用
Split
的代码示例

@DropDownList(m=>m.colors,新选择列表(Model.colors))

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

Html.DropDownList("give_it_a_name", new SelectList(Model.colours))
public class YourVM 
{
    public string SelectedColor{get;set;}
    public IEnumerable<string> Colors {get;set;}
}
或者您可能想使用
DropDownListFor
,如果是,则需要两件事:

  • 将接受从下拉列表中选择的项的属性
  • 用于在下拉列表中显示选项的列表
  • 您的视图应该如下所示:

    Html.DropDownList("give_it_a_name", new SelectList(Model.colours))
    
    public class YourVM 
    {
        public string SelectedColor{get;set;}
        public IEnumerable<string> Colors {get;set;}
    }
    
    最后,在你看来:

    @Html.DropDownListFor(m => m.colours, new SelectList(Model.Colors))
    
    @DropDownList(m=>m.colors,新选择列表(Model.colors))

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

    Html.DropDownList("give_it_a_name", new SelectList(Model.colours))
    
    public class YourVM 
    {
        public string SelectedColor{get;set;}
        public IEnumerable<string> Colors {get;set;}
    }
    
    或者您可能想使用
    DropDownListFor
    ,如果是,则需要两件事:

  • 将接受从下拉列表中选择的项的属性
  • 用于在下拉列表中显示选项的列表
  • 您的视图应该如下所示:

    Html.DropDownList("give_it_a_name", new SelectList(Model.colours))
    
    public class YourVM 
    {
        public string SelectedColor{get;set;}
        public IEnumerable<string> Colors {get;set;}
    }
    
    最后,在你看来:

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

    如果这段代码甚至不能编译,这怎么可能是公认的答案呢?这对其他寻求权利的人来说是误导answer@vonv. 你说得对,我只是在一个地方更新了线路,没有检查。我删除了代码以避免误导,稍后再检查。谢谢你指出这一点。不用担心@KonradGadzina,我们都想成为开发者的好资源,所以最终的目标是拥有最好的内容。感谢您编辑您的答案;)如果这段代码甚至不能编译,这怎么可能是公认的答案呢?这对其他寻求权利的人来说是误导answer@vonv. 你说得对,我只是在一个地方更新了线路,没有检查。我删除了代码以避免误导,稍后再检查。谢谢你指出这一点。不用担心@KonradGadzina,我们都想成为开发者的好资源,所以最终的目标是拥有最好的内容。感谢您编辑您的答案;)