生成十进制下拉列表

时间:2015-04-17 09:37:41

标签: html asp.net-mvc razor asp.net-mvc-5

我试图为小数创建一个下拉列表范围: 0 0.5 1 1.5 .. .. 50 < - 最终值不确定

拥有此代码

<div class="div-EditorFor" style="display: table-cell">
    @Html.DropDownListFor(model => model.RolledOver, Enumerable.Range(0, 50).Select(x => new SelectListItem { Text = x.ToString(), Value = (x / 2).ToString() }))
</div>

模型

public decimal RolledOver { get; set; }

但无法使其发挥作用,它会产生完整的价值。尝试过在某些地方转换为十进制但总是会出现语法错误。

有没有办法以这种格式执行此操作?

谢谢,

2 个答案:

答案 0 :(得分:2)

您使用整数除法,因此需要将其更改为

@Html.DropDownListFor(model => model.RolledOver, Enumerable.Range(0, 10).Select(x => new SelectListItem { Text = (x / 2F).ToString(), Value = (x / 2F).ToString() }))

@Html.DropDownListFor(model => model.RolledOver, new SelectList(Enumerable.Range(0, 10).Select(x => x / 2F)))

答案 1 :(得分:1)

因为Enumerable.Range(0,50)是int类型的可枚举,默认情况下对它执行Select假定我们正在使用整数,当整数被分割时它们返回整数。使用&#39; x&#39;时指定您需要小数或双精度在你的lambda中将解决这个问题

<div class="div-EditorFor" , style="display: table-cell"> @Html.DropDownListFor(model => model.RolledOver, Enumerable.Range(0, 50).Select(x => new SelectListItem { Text = x.ToString(), Value = ((decimal)(x / 2)).ToString() })) </div>