繁体   English   中英

在ASP.NET MVC3中使用带小数点的DropDownList

[英]Use a DropDownList with a decimal in ASP.NET MVC3

此代码显示一个带有某些选项的下拉框。 选项为小数。 用户选择一个,然后按保存。 回发时,应在下拉框中选择所选的选项。 这不是字符串的问题。 此代码使用小数。 回发回时,未选择任何内容。 我认为由于十进制精度,ASP.NET MVC无法匹配。

在下拉框中显示的小数列表

public static List<decimal> MyCustomFieldOptions
{
    get
    {
        var x = new List<decimal>();
        x.Add(0.10m);
        x.Add(0.25m);

        return x;
    }
}

视图模型上的属性:

[UIHint("MyCustomField")]
public decimal MyCustomField { get; set; }

在视图中:

@Html.EditorFor(model => model.MyCustomField)

EditorTemplate:

@model decimal

@Html.DropDownListFor(x => x, new SelectList(ProjectNamespace.MyViewModel.MyCustomFieldOptions), new {size="2"})

/Shared/EditorTemplates/MyCustomField.cshtml

此代码正确显示一个列表框,其中有两个选项可供选择。 用户可以选择一个,然后按保存,控制器将获得该值。 控制器将看到0.250.1 但是,当页面返回时,不再选择该项目。

我很确定这是由于小数精度问题。

@Model.MyCustomField.ToString()返回0.250

注意编辑器模板输出的内容:

<select id="MyCustomField" name="MyCustomField" size="2">
     <option>0.10</option>
     <option>0.25</option>
</select>

选项的十进制精度是不同的。 0.25 ,而不是0.250因此可能无法匹配。

我读了这篇SO文章 ,这给了我创建编辑器模板和查看十进制精度的提示。

使用选项值属性,

     <option value="0.100">0.10</option>
     <option value="0.250">0.25</option>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM