【问题标题】:Razor syntax to show a drop down list in asp.net mvc在 asp.net mvc 中显示下拉列表的 Razor 语法
【发布时间】:2013-04-15 07:36:20
【问题描述】:

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

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

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

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

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

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

谢谢,

标记

【问题讨论】:

    标签: asp.net asp.net-mvc-3 razor


    【解决方案1】:

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

    编辑:

    查看this answer 以获取在这种情况下使用Split 的代码示例。

    【讨论】:

    • 如果这段代码甚至无法编译,这怎么可能是公认的答案?这会误导其他寻找正确答案的人
    • @vonv。你是对的,我只是在一个地方更新了该行,并没有检查它。我删除了代码以免误导,我稍后会检查它。感谢您指出这一点。
    • 不用担心@KonradGadzina,我们都希望 SO 成为开发人员的良好资源,因此最终目标是拥有最好的内容。感谢您编辑您的答案;)
    【解决方案2】:

    @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))
    

    【讨论】:

      【解决方案3】:

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

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

      Html.DropDownList 的调用保持不变。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-12
        • 2023-01-12
        • 1970-01-01
        • 1970-01-01
        • 2016-09-23
        • 2014-09-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多