【问题标题】:MVC3 dropdownlistforMVC3 下拉列表
【发布时间】:2012-05-29 09:21:47
【问题描述】:

我想制作一个下拉列表,数字为 0-10。所以用户可以评价一些东西。 目前,我有一个标签:@Html.LabelFor(model=> model.RATE) 如何修改此代码以使我有一个下拉框?并且下拉框的值会存储在model.RATE中吗?

标签有效,但最好有一个下拉菜单。

解决方案:

@Html.DropDownListFor(model => model.RATE, Enumerable.Range(0,11).Select( x => new SelectListItem { Text = x.ToString() }));

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-3 razor html.dropdownlistfor


    【解决方案1】:
    @Html.DropDownListFor(model => model.RATE, new SelectList(Enumerable.Range(0, 11)))
    

    这将对表单和表单进行数据绑定

    【讨论】:

    • 0-10 有 11 个元素。所以 Enumerable.Range(0,11).
    • 这对我不起作用...您不能将 Enumerable<int> 分配给 Enumerable<SelectListItem>
    • 你可以使用Enumerable.Range(0,11).Select( x => new SelectListItem { Text = x.ToString() } )
    • 没错,但是 SelectList 有一个仅用于 Enumerable 的构造函数,因此您可以使用构造函数为您完成。
    • 谢谢,这对我有用:@Html.DropDownListFor(model => model.RATE, Enumerable.Range(0,11).Select( x => new SelectListItem { Text = x.ToString () }));
    【解决方案2】:

    只需创建包含评级的SelectListItem 对象列表,然后将Html.DropDownListFor 与存储在模型中的评级一起使用 (Model.RATE)。

    @{
        var ratings = new List<SelectListItem>();
        for( var i = 0; i <= 10; i++ ) {
            days.Add( new SelectListItem { Text = i.ToString(), Value = i.ToString(), Selected = Model.RATE == i } );
        }
    }
    @Html.DropDownListFor( x => x.RATE, ratings )
    

    【讨论】:

      【解决方案3】:
      @Html.DropDownListFor(m => m.RATE, Model.RateSelectList, "<- Select Option ->")
      

      Model.RateSelectList 将是 IEnumerable 类型,m.RATE 将是您的可空整数(int?)属性。第三个参数是您的默认文本,如果 m.RATE 为空,则显示该文本。

      【讨论】:

      • 在遇到此问题之前,我不知道如何设置默认值。谢谢。
      猜你喜欢
      • 2012-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多