微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – C#MVC Controller无法从Ajax POST请求中获取十进制或双精度值

我的问题是,当我尝试通过ajax将double或decimal发送到我的C#MVC Controller时,该值始终为null.我可以将值作为字符串发送,我可以毫无问题地发送整数.为什么我不能发送带小数的值?当我检查从客户端发送的请求时,存在正确的值(表单数据是价格= 84.50).

错误

The parameters dictionary contains a null entry for parameter ‘price’
of non-nullable type ‘System.Decimal’

HTML

 <input type="number" step="1" class="form-control" name="price" id="price">
 <button type="button" class="btn btn-success">Send</button>

使用Javascript:

$('.btn-success').click(function () {

    //var price = $('#price').val(); - Did not work
    //var price = Number($('#price').val()); Did not work
    var price = Number($('#price').val()).toFixed(2); // Does not work

    $.ajax({
        url: 'PriceFunction',
        type: 'POST',
        data: {
            price: price,
        }
    }).done(function () {

    }).fail(function () {
        console.log("Error in ajaxfunction!");
    });
});

C#:

    [HttpPost]
    public void PriceFunction(decimal price)
    {
     // I have tried with decimal, double and double?.     
    }

解决方法:

发送十进制值时,需要对数据进行字符串化.

data: JSON.stringify({ Price: 5.0 })

这是因为认绑定器将十进制视为整数.

您当然可以更改为使用DecimalModelBinder,详细信息请参见以下链接

ASP.NET MVC3 JSON decimal binding woes

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐