我想传递一个复杂的JSON对象。但是,当我调试Controller Action时,所有虚拟属性都为null。使用ASP.NET,EF和CF。
JSON已发送:
POST http://localhost:53214/api/trans/ HTTP/1.1
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Host: localhost:53214
Content-Length: 221
{
"trans": {
"Location": {
"locID": 2
}
}
}
模型反式:
public class trans
{
[Key]
public int tID { get; set; }
//public int? locID { get; set; }
public virtual Location Location { get; set; }
}
}
因此,当我始终通过Fiddler发布JSON时,所有Virtual属性均为null。
在我按照模型中的说明使用外键之前。很好
我想重建代码以优化代码本身。
如何初始化属性并反序列化正确的JSON?
关于马库斯
我为您创建了一个小样本(请在下面的解决方案中找到)。它主要取决于您如何构造客户端对象。
模型 -
public class trans
{
[Key]
public int tID { get; set; }
public virtual Location Location { get; set; }
}
public class Location
{
public int locID { get; set; }
}
控制器动作-
public ActionResult Index()
{
return View();
}
[HttpPost]
public JsonResult Submit(trans trans)
{
return null;
}
简单视图-
@{
ViewBag.Title = "Home Page";
}
<table id="example" class="display">
</table>
@section scripts{
<script>
$(function() {
var o = new Object();
o.tID = 123;
o.Location = new Object();
o.Location.locID = 456;
$.ajax({
url: '@Url.Action("Submit", "Home")',
type: "POST",
cache: false,
data: JSON.stringify({ trans : o }),
contentType: "application/json; charset=utf-8",
success: function(data) {
if (data) {
alert("Success");
}
},
error: function(jqXhr, textStatus, errorThrown) {
alert(errorThrown);
}
});
})
</script>
}
当您运行该页面时,它将点击控制器后操作并检查以下输出-
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句