【发布时间】:2014-03-17 19:50:21
【问题描述】:
我有简单的 ajax 调用
$.get("api/dashboard/tile/1x1/" + tag, { id: id },
function (tile) {
options.result(modelmapper.fromDb(tile, 'dashboard'));
}, 'json')
从 ASP.NET MVC 控制器读取。嵌套到 Person 中的 Object Tile
class Person{
public int Id { get; set; }
public Tile Tile { get; set; }}
class Tile{
public int Id { get; set; }}
问题:当 Id 不同时一切正常,如果 Id 相同则有点
加载资源失败:服务器响应状态为 500(内部服务器错误)
我能看到的唯一一个解决方案(显然它有效)将 Id 重命名为像 PersonId 这样有意义的东西,但是我失去了很多灵活性并且需要重新编写应用程序的重要部分。请帮忙。
更新 控制器
[System.Web.Http.ActionName("tile")]
[System.Web.Http.AcceptVerbs("GET")]
// GET api/dashboard/tile/1x1/person
public Person Tile()
{
var tile = new Tile();
tile.Id = 1;
var personTile = new Person();
personTile.Id = 1;
personTile.Tile = tile;
return personTile;
}
解决方案:我发现的唯一一种解决方案是在控制器 JsonConvert.SerializeObject 中强制序列化数据,然后在客户端 JSON.Parse() 上进行脱盐
【问题讨论】:
-
向我们展示您的控制器代码
-
500 服务器错误表明您的服务器端代码出现故障。在依赖 AJAX 代码之前,您需要做任何必要的事情来解决这个问题。
-
但是从地址栏调用它时我能够接收 XML
-
可能是序列化问题?
标签: jquery asp.net-mvc serialization