Javascript对象到C#对象没有正确转换double

时间:2014-12-02 09:17:44

标签: asp.net-mvc implicit-conversion javascript-objects

我正在尝试将使用javascript创建的模型(因为它是由用户手动创建)发送到MVC控制器。

模型非常复杂,一个类使用double?类型作为变量。它适用于int个数字,但当我使用"0.5"时,该值设置为null。

双值失败的原因是什么?我该怎么办?

一些代码:

var serie = {};

serie.Name = $(elem).children("#name").val();

serie.UnitMeasurement = $(elem).children("#unitMeasurement").val();

serie.ThresholdRed = $(elem).children("#redThreshold").val();

serie.ThresholdYellow = $(elem).children("#yellowThreshold").val();


public class Serie
        {
            public string Name { get; set; }
            public string UnitMeasurement { get; set; }
            public double? ThresholdRed { get; set; }
            public double? ThresholdYellow { get; set; }
        }

1 个答案:

答案 0 :(得分:-1)

您可以像使用

一样使用您的课程
public class Serie
{
    public string Name { get; set; }
    public string UnitMeasurement { get; set; }
    public string ThresholdRed { get; set; }
    public string ThresholdYellow { get; set; }
}

然后在使用这些varriable时,您可以将它们转换为 -

double? d = Convert.ToDouble(ThresholdRed);

或者你可以使用double.TryParse喜欢 -

double d;
bool result = double.TryParse(str, out dbl); // `result` will be the status of tried Parsing (true or false)

编辑:(

为了避免与文化混淆,请在发送之前对参数进行编码,如< - p>

var serie = {};
serie.Name = escape($(elem).children("#name").val());
serie.UnitMeasurement = escape($(elem).children("#unitMeasurement").val());
serie.ThresholdRed = escape($(elem).children("#redThreshold").val());
serie.ThresholdYellow = escape($(elem).children("#yellowThreshold").val());

在服务器上使用它们时,首先解码它们 -

double? d = Convert.ToDouble(HttpUtility.HtmlDecode(ThresholdRed));