将可空的十进制数从json传递到ASP.NET MVC Controller Action?

时间:2012-08-10 08:29:20

标签: jquery asp.net-mvc json

我有一个Asp.NET MVC控制器动作,它接收一个DTO,而DTO又包含一个可以为空的十进制属性。

e.g。

 [DataContact]
 public class MyDTO
 {
     //other properties

     [DataMember]
     public decimal? SomeProp {get;set;}
 }

我的行动如下:

 public JsonResult SaveMyDTO(MyDTO dto)
 {...

我可以看到js客户端传递了正确的json数据,为“SomeProp”设置了值,但是,在服务器上反序列化时没有设置该属性,其他属性是,但不是可以为空的十进制prop。

最简单的方法是什么?将属性转换为字符串?

2 个答案:

答案 0 :(得分:1)

我假设您将JSON数据作为数值发送到SomeProp,如下所示:

var json = { "SomeProp": 2.233 };

MVC中的序列化例程有时会出现可以为空的数值问题,因此如果是这种情况,请尝试在发送请求之前将该值转换为字符串:

var json = { "SomeProp": "2.233" };

修改
刚刚注意到你在问题的最后一行提到了这个解决方案:)

答案 1 :(得分:1)

将属性更改为nullable double可使其正常工作。