在ASP中使用带小数的下拉列表.净MVC3

本文关键字:下拉列表 MVC3 小数 ASP | 更新日期: 2023-09-27 18:14:06

这段代码显示了一个带有一些选项的下拉框。选项是小数。用户选择一个,然后按保存。在回发时,应在下拉框中选择所选选项。这不是字符串的问题。这个代码使用了小数。当回发返回时,没有选择任何内容。我认为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"})

/共享/EditorTemplates/MyCustomField.cshtml

这段代码正确地显示了一个列表框,其中有两个选项可供选择。用户可以选择一个,按下save,控制器就会得到这个值。控制器将看到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,所以可能无法匹配。

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

在ASP中使用带小数的下拉列表.净MVC3

使用option value属性,

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