小编典典

C#MVC控制器无法从Ajax POST请求获取十进制或双精度值

ajax

我的问题是,当我尝试通过Ajax将双精度或十进制数发送到C#MVC控制器时,该值始终为null。我可以将值作为字符串发送,也可以毫无问题地发送整数。为什么我不能发送带小数的值?当我检查从客户端发送的请求时,正确的值在那里(表单数据为price=84.50)。

错误:

参数字典包含非空类型“ System.Decimal”的参数“ price”的空条目

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?.     
    }

阅读 239

收藏
2020-07-26

共1个答案

小编典典

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

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

这是因为默认联编程序将十进制视为整数。

您当然可以更改为使用,DecimalModelBinder该链接在以下链接中进行了详细介绍:

ASP.NET MVC3 JSON十进制绑定问题

2020-07-26