我试图为小数创建一个下拉列表范围: 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; }
但无法使其发挥作用,它会产生完整的价值。尝试过在某些地方转换为十进制但总是会出现语法错误。
有没有办法以这种格式执行此操作?
谢谢,
答案 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>