Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET MVC3中使用带小数点的下拉列表_C#_Asp.net Mvc - Fatal编程技术网

C# 在ASP.NET MVC3中使用带小数点的下拉列表

C# 在ASP.NET MVC3中使用带小数点的下拉列表,c#,asp.net-mvc,C#,Asp.net Mvc,此代码显示一个带有一些选项的下拉框。选项是小数。用户选择一个,然后按save。回发时,应在下拉框中选择所选选项。这不是字符串的问题。这段代码使用的是小数。回发返回时,未选择任何内容。我认为ASP.NET MVC在匹配方面遇到了问题,因为十进制精度 要在下拉框中显示的小数列表 public static List<decimal> MyCustomFieldOptions { get { var x = new List<decimal>()

此代码显示一个带有一些选项的下拉框。选项是小数。用户选择一个,然后按save。回发时,应在下拉框中选择所选选项。这不是字符串的问题。这段代码使用的是小数。回发返回时,未选择任何内容。我认为ASP.NET MVC在匹配方面遇到了问题,因为十进制精度

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

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

        return x;
    }
}
他认为:

@Html.EditorFor(model => model.MyCustomField)
编辑模板:

@model decimal

@Html.DropDownListFor(x => x, new SelectList(ProjectNamespace.MyViewModel.MyCustomFieldOptions), new {size="2"})
/共享/EditorTemplates/MyCustomField.cshtml

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

我很确定这是因为十进制精度的问题

@Model.MyCustomField.ToString()
返回
0.250

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

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

0.10
0.25
选项的小数精度不同<代码>0.25,而不是
0.250
,因此它可能无法匹配


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

使用option-value属性

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