我刚刚花了很多时间来追踪一个缺陷,在该缺陷中,MVC操作方法的JSON模型参数始终为空。原因与其他相关问题中提出的原因不同,因此是新问题。
我的动作如下所示:
[HttpPost]
public ActionResult SendDeviceDetails(DeviceModel model)
{
model.DoStuffHere();
}
我的模型类如下所示:
public class DeviceModel
{
public string Manufacturer { get; set; } // e.g. "Asus"
public string Model { get; set; } // e.g. "Nexus 7"
// etc.
}
该模型对象作为JSON字符串从移动设备发布。
但是,控制器操作始终抛出a,NullReferenceException
因为model
它始终为null。在开始精简模型类并再次构建它之前,我花了一些时间来验证数据是否从客户端正确发送。(实际上,它具有比我在这里显示的更多的属性。)
我发现的是:如果模型类具有名为的属性Model
,您将始终获得传递给action方法的空引用。如果我将该属性重命名(例如ModelName
),则一切运行正常。
这真的像我看来一样疯狂吗?我是否为此限制缺少一些正当的理由,或者仅仅是MVC中的一个完全缺陷?如果我真的想拥有一个名为属性,有什么方法可以解决呢Model
?
该问题是由DeviceModel.Model
与操作参数名称(model
)相匹配的属性名称()引起的。重命名它们中的任何一个都可以解决该问题。因此,实际上可以Model
在模型类中有一个属性,只要您传递的参数不被调用即可model
。
疯狂的!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句