【问题标题】:Passing null value as nullable decimal property to controller action将空值作为可为空的十进制属性传递给控制器​​操作
【发布时间】:2013-02-09 21:52:15
【问题描述】:

我试图在 JSON 对象中传递一个 null 值,比如说:{ 'property': null } 到 ASP.Net MVC 中的控制器操作,但在操作方法中,我看到该属性得到一个零值而不是 null。

对此我能做些什么?

【问题讨论】:

  • 确保您在控制器操作定义中使用可空类型。需要看代码给出更具体的解决方案。
  • 我肯定在控制器动作参数的属性中使用了一个可以为空的十进制类型,像这样:公共十进制?属性X { 得到;放; }

标签: asp.net-mvc json asp.net-mvc-4


【解决方案1】:

只是不要发送该属性或在客户端删除该属性:delete x.yourProperty

例如,如果您有一些具有可空属性的 .net mvc 控制器,如下所示:

public JsonResult SomeAction(decimal? yourProperty){ //your code goes here }

如果在客户端调用一些带有 yourProperty: null 的 ajax 请求,模型绑定器会将其设置为 0,例如将设置为 EmptyString 的 int 或字符串

因此,如果您想将其作为 null 发送,您只需避免发送它,或者如果它是您在设置之前设置的属性,您只需删除该属性:delete x.yourProperty

【讨论】:

  • 这并没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
  • 这取决于作者自己来确认我猜谁的答案是正确的。
  • 虽然我不确定这是通过它工作正常的最佳方式。谢谢!
【解决方案2】:

如果你想让它工作,你的模型上的属性应该是一个可以为空的小数:

public decimal? MyProperty { get; set; }

【讨论】:

  • 原来如此。
  • 在这种情况下,您能否展示您的完整代码(去除所有噪音)以便我们重现问题?您的确切模型声明、控制器和视图。
猜你喜欢
  • 2011-08-17
  • 1970-01-01
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-30
  • 1970-01-01
相关资源
最近更新 更多