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

作者:编程家 分类: 编程代码 时间:2025-09-16

使用C# MVC框架开发Web应用程序时,经常会遇到从前端通过Ajax POST请求向控制器传递数据的情况。然而,最近遇到了一个问题,即控制器无法正确地获取Ajax POST请求中的十进制或双精度值。

这个问题的原因是在Ajax POST请求中,浏览器将十进制或双精度值转换为了字符串,并且默认使用了浮点数标记。而控制器在接收到这些字符串时,会尝试将其转换为十进制或双精度类型,但是由于浮点数标记的存在,导致转换失败。

为了解决这个问题,我们可以使用一种简单的方法,在Ajax POST请求中将十进制或双精度值转换为整数,并将其作为参数传递给控制器。然后在控制器中,再将这个整数转换为十进制或双精度类型,这样就可以正确地获取到这些值了。

下面是一个示例代码,演示了如何使用这种方法来解决控制器无法从Ajax POST请求获取十进制或双精度值的问题:

csharp

// 在前端,使用JavaScript将十进制或双精度值转换为整数,并通过Ajax POST请求传递给控制器

var value = 3.14;

var intValue = parseInt(value * 100);

$.ajax({

url: '/Controller/Action',

type: 'POST',

data: { value: intValue },

success: function(result) {

console.log(result);

}

});

// 在控制器中,将接收到的整数转换为十进制或双精度类型

public ActionResult Action(int value)

{

var decimalValue = (decimal)value / 100;

// 处理逻辑...

return Json(decimalValue, JsonRequestBehavior.AllowGet);

}

解决方案:将值转换为整数

如上所述,我们可以通过将十进制或双精度值转换为整数,并在控制器中再将其转换回十进制或双精度类型来解决控制器无法从Ajax POST请求获取这些值的问题。这种方法可以确保控制器正确地获取到前端传递的十进制或双精度值,并且不会受到浮点数标记的影响。

在C# MVC开发中,控制器无法从Ajax POST请求获取十进制或双精度值是一个常见的问题。通过将这些值转换为整数,并在控制器中再将其转换回十进制或双精度类型,我们可以解决这个问题。这种方法简单易行,并且可以确保控制器正确地获取到前端传递的值。

希望这篇文章对你有所帮助!如果你在C# MVC开发中遇到类似的问题,不妨尝试一下这种解决方案。祝你编程愉快!