我有一个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。
最简单的方法是什么?将属性转换为字符串?
答案 0 :(得分:1)
我假设您将JSON数据作为数值发送到SomeProp
,如下所示:
var json = { "SomeProp": 2.233 };
MVC中的序列化例程有时会出现可以为空的数值问题,因此如果是这种情况,请尝试在发送请求之前将该值转换为字符串:
var json = { "SomeProp": "2.233" };
修改
刚刚注意到你在问题的最后一行提到了这个解决方案:)
答案 1 :(得分:1)
将属性更改为nullable double可使其正常工作。