【发布时间】:2019-09-13 13:07:57
【问题描述】:
当我从浏览器 (JavaScript) 向 ASP.NET MVC 后端提交包含一些基本类型和一个对象数组的表单时,我正在发送一个 JSON 对象,但是对象数组被反序列化为一个空数组 (列表,实际上)。
我已经使用 Chrome 的检查器检查了发送的内容,并且 JSON 以正确的值输出,所以我认为问题出在后端。
控制器动作:
[HttpPost]
public ActionResult FooAction(FooViewModel viewModel)
{
//code
}
FooViewModel:
public class FooViewModel
{
public List<BarViewModel> Bars { get; set; } // <-- What arrives empty, not null
public int PrimitiveProperty { get; set; }
public int OtherPrimitiveProperty { get; set; }
public string LastPrimitiveProperty { get; set; }
}
BarViewModel:
public class BarViewModel
{
public long LongProperty{ get; set; }
public string StringProperty { get; set; }
public bool BoolProperty { get; set; }
}
调试控制器动作时,Bars 为空(非空)。
这就是 Chrome 的检查器向我展示的内容:
LastPrimitiveProperty: SomeText
PrimitiveProperty: 1
OtherPrimitiveProperty: 9
Bars: [{"LongProperty":274,"StringProperty":"SomeString","BoolProperty":true},{"LongProperty":119,"StringProperty":"SomeString","BoolProperty":false},{"LongProperty":163,"StringProperty":"SomeString","BoolProperty":false}]
【问题讨论】:
-
对我来说一切都很好
-
尝试将 FromBody 添加到您的操作 FooAction。 (FooAction([FromBody]FooViewModel viewModel))
标签: javascript c# json asp.net-mvc