我的问题是,当我尝试通过Ajax将双精度或十进制数发送到C#MVC控制器时,该值始终为null。我可以将值作为字符串发送,也可以毫无问题地发送整数。为什么我不能发送带小数的值?当我检查从客户端发送的请求时,正确的值在那里(表单数据为price=84.50)。
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?. }
发送十进制值时,需要对数据进行字符串化。
data: JSON.stringify({ Price: 5.0 })
这是因为默认联编程序将十进制视为整数。
您当然可以更改为使用,DecimalModelBinder该链接在以下链接中进行了详细介绍:
DecimalModelBinder
ASP.NET MVC3 JSON十进制绑定问题