.net 如何使用 AJAX 将十进制值传递给控制器?

flmtquvp  于 2022-11-26  发布在  .NET
关注(0)|答案(4)|浏览(121)

我有一个数字输入,当用户输入一个数字时,它将使用 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});
}
laik7k3q

laik7k3q1#

直接发送值并尝试在控制器中进行转换

var postdata = {x: $("#input").val()};
    $.ajax({url: url, type: "POST", data: postdata, async: false})

这是控制器函数:

[HttpPost]
public ActionResult MyFunction(string x) 
{
 double z=Convert.ToDouble(x.Trim()); // trim just in case....

  return Json(new {success = true, JsonRequestBehavior.AllowGet});
}

如果您重复尝试,它应该会工作(将.替换为,)

double.Parse("52.8725945", System.Globalization.CultureInfo.InvariantCulture);
wsxa1bj1

wsxa1bj12#

我遇到了同样的问题,用双精度(不是小数),但我认为解决方案可能是一样的。对我来说,这一切都是关于文化和设置正确的数字格式!

解决方案:

NumberFormat = NumberFormatInfo.InvariantInfo;

这是应用程序CultureInfo的参数!您可以在多个位置设定此参数。如果您的应用程序上只有一个文化特性,请在Global.asaxApplication_Start()上设定此参数。
在Web.config上没有任何更改,并且可以与$("#input").val()一起工作(有或没有parseFloat())。

ebdffaop

ebdffaop3#

其实很简单:
产品型号:

public decimalValue

在 AJAX 数据中:

$("#value").val().replace(",",".")

它会自动将值发送给控制器。

(10.90, 10.90)

Input声明为数字有助于在发送字符串时不给予错误。

jslywgbw

jslywgbw4#

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

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

这是因为默认联编程序将小数视为整数。
更多信息,请访问lelow链接:-
C# MVC Controller cannot get decimal or double values from Ajax POST request

编辑1:-

您还可以尝试:-

parseFloat(value).toFixed(2)

相关问题