繁体   English   中英

为什么输入模型在asp.net核心操作中为空

[英]Why is Input Model null in asp.net core action

我正在向我的 API 提交订单。

通常,它工作正常。 但有时, inputModel 为空。

为什么会出现这种情况?

public async Task<Order> NewAsync(OrderInput input)

当 InputModel 与传递给它的实际参数不匹配时,输入模型在控制器中将为空。

需要明确的是:控制器不关心是否向它传递了额外的参数,它会简单地忽略它们。

但是如果有一个“必需”参数,比如:

public int TypeId{get;set;}

如果没有提供,那么整个输入模型将为空。

如果 TypeId 真的是可选的,那么让它可以为空,然后输入模型将它设置为空。

public int? TypeId{get;set;} 

总结一下:控制器已为 InputModel 传递了一个 null 值,而 InputModel 不允许为 null。 结果是整个 inputModel 在处理时将为空。

这可能会令人沮丧,因为没有抛出异常,你得到的只是一个空模型。

解决方法是将浏览器中的 post 参数与模型进行比较,并找出哪些参数不应该为 null。 这种情况发生在我身上的频率比我愿意承认的要多得多,而且每一次,我都必须停下来再次弄清楚这一点,所以我想我会继续在这里张贴这个以提醒自己下次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM