[英]Migration from ASP.NET MVC to ASP.NET Core MVC - action model binding resulting null
[英]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.