我有一个数字输入,当用户输入一个数字时,它将使用 AJAX 从视图发送到控制器。一切都工作正常,但当用户输入十进制数字时,我得到绑定错误(1、1或1.2等)。我希望用户能够使用十进制数字。
以下是相关的View代码:
var postdata = {x: <number input value>};
$.ajax({url: url, type: "POST", data: postdata, async: false})
这是控制器函数:
[HttpPost]
public ActionResult MyFunction(decimal x)
{
return Json(new {success = true, JsonRequestBehavior.AllowGet});
}
4条答案
按热度按时间laik7k3q1#
直接发送值并尝试在控制器中进行转换
这是控制器函数:
如果您重复尝试,它应该会工作(将.替换为,)
wsxa1bj12#
我遇到了同样的问题,用双精度(不是小数),但我认为解决方案可能是一样的。对我来说,这一切都是关于文化和设置正确的数字格式!
解决方案:
这是应用程序
CultureInfo
的参数!您可以在多个位置设定此参数。如果您的应用程序上只有一个文化特性,请在Global.asax
的Application_Start()
上设定此参数。在Web.config上没有任何更改,并且可以与
$("#input").val()
一起工作(有或没有parseFloat()
)。ebdffaop3#
其实很简单:
产品型号:
在 AJAX 数据中:
它会自动将值发送给控制器。
将
Input
声明为数字有助于在发送字符串时不给予错误。jslywgbw4#
发送十进制值时,需要对数据进行字符串化。
这是因为默认联编程序将小数视为整数。
更多信息,请访问lelow链接:-
C# MVC Controller cannot get decimal or double values from Ajax POST request
编辑1:-
您还可以尝试:-