c# – JQuery Asp.Net MVC,传递浮点数

前端之家收集整理的这篇文章主要介绍了c# – JQuery Asp.Net MVC,传递浮点数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近和MVC一起工作,在尝试使用ajax向控制器发送请求时遇到了一个奇怪的问题.我正在使用直接与MVC的 JQuery(1.3.2版),我试图发送这样的一个jax请求:
$.post("Home/OpenTrade",{ price: 1.5 },function() { },"json");

我也尝试过parseFloat(“1.5”)而不是1.5.
当我尝试在控制器中使用这个值

[AcceptVerbs( HttpVerbs.Post)]
public void OpenTrade(float? price)

我的价格总是为零.如果我省略控制器根本没有被调用(这并不奇怪),我已经尝试使用十进制以及double类型.此外,当我发送整数数据(如果我发送1这个控制器被调用,并且float?价格被正确填充),这个功能工作.我错过了什么,还是一个bug?

广告.我可以收到价格作为字符串,然后手动解析,但我不喜欢这个解决方案,因为它不优雅,它打击使用框架像MVC的全部目的为我做这个.

编辑&回答:使用Joel的建议,我创建了一个模型绑定器,我会发布,也许有人会使用它:

class DoubleModelBinder : IModelBinder
{
    #region IModelBinder Members

    public object BindModel(ControllerContext controllerContext,ModelBindingContext    bindingContext)
    {
        string numStr = bindingContext.ValueProvider[bindingContext.ModelName].AttemptedValue;
        double res;

        if (!double.TryParse(numStr,System.Globalization.NumberStyles.Number,System.Globalization.CultureInfo.InvariantCulture,out res))
        {
            if (bindingContext.ModelType == typeof(double?))
                return null;
            throw new ArgumentException();
        }

        if (bindingContext.ModelType == typeof(double?))
            return new Nullable<double>(res);
        else
            return res;
    }

    #endregion
}

它可能注册为双倍和双倍?粘合剂,双重?如果值无法解决,它将传递给控制器​​的null.

顺便说一句.为什么浮动和双打的任何想法都不能开箱即用(对我来说)

Edit2&解决方案:好的,这很有趣:)它没有为我工作,因为请求的字符串发送1.5432(一个示例值),这是完全可以,但是… MVC正在尝试使用我的文化设置内部解码,这是期望的数字是格式1,5432,所以转换失败了.
所以,要记住的是:如果你生活在陌生的国家,请仔细检查你的文化环境.

解决方法

做一个浮动模型绑定器.这可以从表单集合中提取适当的值,解析它,并将其作为参数返回
原文链接:https://www.f2er.com/csharp/95071.html

猜你在找的C#相关文章