C# 尝试获取时出现错误的双精度值

C# 尝试获取时出现错误的双精度值,c#,asp.net-mvc,C#,Asp.net Mvc,我正在开发一个ASP.NET MVC web应用程序。在我的一个视图中,我得到了一个列表框,该列表框由基于我的ViewModel的一些双值填充: public class SuggestionViewModel { public bool PADP { get; set; } public bool PremedicationPADP { get; set; } public double NbPADP { get; set; } public IEnumerab

我正在开发一个ASP.NET MVC web应用程序。在我的一个视图中,我得到了一个列表框,该列表框由基于我的ViewModel的一些双值填充:

public class SuggestionViewModel
{
    public bool PADP { get; set; }
    public bool PremedicationPADP { get; set; }
    public double NbPADP { get; set; }
    public IEnumerable<SelectListItem> PADPItems { get; set; }
    public bool Other { get; set; }

    public SuggestionViewModel()
    {
        PADPItems = (new double[] { 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 3.75, 4 }).Select(d => new SelectListItem { Value = d.ToString(), Text = d.ToString() });

        PADCItems = (new double[] { 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 3.75, 4 }).Select(d => new SelectListItem { Value = d.ToString(), Text = d.ToString() });
    }
}
当我试图通过控制器中的操作恢复这些值时,我得到了一些错误的值。例如,如果我在视图中选择'0.25',我将得到'25.0',如果完全为假。为什么当我尝试获取它时,值会发生变化

编辑:我得到的列表框HTML代码:

<option value ="0,25">0,25</option>
<option value ="0,5">0,50</option>
<option value ="0,75">0,75</option>
<option value ="1">1</option>

我认为正确的做法是根据评论将整个解决方案本地化为法语,这就是您所使用的。但是,这通常会引入开销并影响其他设置,例如外部组件的配置设置,例如jQueryUI、剑道-考虑日期。另一种解决方案是将模型的类型从double更改为string,并在控制器中使用目标本地化对其进行解析

public class SuggestionViewModel
{
    public bool PADP { get; set; }
    public bool PremedicationPADP { get; set; }
    public string NbPADP { get; set; } //*1
    public IEnumerable<SelectListItem> PADPItems { get; set; }
    public bool Other { get; set; }

    public SuggestionViewModel()
    {
         PADPItems = (new double[] { 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 3.75, 4 }).Select(d => new SelectListItem { Value = d.ToString(), Text = d.ToString() });

         PADCItems = (new double[] { 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 3.75, 4 }).Select(d => new SelectListItem { Value = d.ToString(), Text = d.ToString() });
    }
}

请粘贴您从视图中获得的HTML标记和代码,这可能是本地化问题。尝试将浏览器本地化设置为英语US。您可能正在使用一个与…不同的十进制分隔符的本地化。谢谢您的回答。我粘贴了我的HTML代码,这样你就可以看到我得到了什么。我也认为这是一个本地化问题,但我必须与法语本地化一起工作。嗯,这总是一个忙乱。。。如果您知道您总是要使用法语本地化,您可以使用字符串而不是双精度,并使用您的目标本地化解析字符串。@AndreiV谢谢,这很有效!我没想到。。。你能把这个解决方案贴出来作为我可以接受的答案吗?再次感谢你。
 double dNbPADP = Double.Parse(model.NbPADP, new CultureInfo("fr-FR"));