1

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

例如

 [DataContact]
 public class MyDTO
 {
     //other properties

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

我的动作是这样的:

 public JsonResult SaveMyDTO(MyDTO dto)
 {...

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

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

4

2 回答 2

1

将属性更改为可为空的双精度使其正常工作。

于 2012-08-10T08:50:08.970 回答
1

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

var json = { "SomeProp": 2.233 };

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

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

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

于 2012-08-10T08:37:48.287 回答