我正在开发一个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>
答案 0 :(得分:1)
我相信&#34;正确的事情&#34;是将整个解决方案的本地化设置为法语(根据评论,这是您使用的)。但是,这通常会引入开销并影响其他设置,例如外部组件的配置设置(例如jQueryUI,Kendo - 考虑日期)。另一种解决方案是将模型的类型从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() });
}
}
我假设您在NbPADP
属性中获得了所选值(如果我错了,请更正我)。当您使用模型时,您可以通过使用法语本地化转换它来获得double值:
double dNbPADP = Double.Parse(model.NbPADP, new CultureInfo("fr-FR"));