C# 在MVC中序列化时JSON无效#
我使用jQueryUI在我的站点的文本框上有一个自动完成功能,JSON在MVC视图模型中序列化,然后在视图中使用。 运行时未正确生成JSON。 浏览器中的控制台返回以下内容 未捕获的语法错误:意外标记& 我还没有让它使用我自己的数据,所以项目名称仍然与JqueryUI示例相关,使用我自己的JSON数据 视图(剃须刀) 序列化的JSONC# 在MVC中序列化时JSON无效#,c#,jquery,asp.net-mvc,json,jquery-ui,C#,Jquery,Asp.net Mvc,Json,Jquery Ui,我使用jQueryUI在我的站点的文本框上有一个自动完成功能,JSON在MVC视图模型中序列化,然后在视图中使用。 运行时未正确生成JSON。 浏览器中的控制台返回以下内容 未捕获的语法错误:意外标记& 我还没有让它使用我自己的数据,所以项目名称仍然与JqueryUI示例相关,使用我自己的JSON数据 视图(剃须刀) 序列化的JSON [{"TeamID":1,"TeamName":"Bilborough
[{"TeamID":1,"TeamName":"Bilborough Broncos","ClubID":null,"LeagueID":null,"IsPremium":false,"PremiumLength":null,"PremiumStart":null,"CountryID":"GB","AreaName":"Nottingham","Club":null,"League":null}]
应该是什么
[{"TeamID":1,"TeamName":"Bilborough Broncos","ClubID":null,"LeagueID":null,"IsPremium":false,"PremiumLength":null,"PremiumStart":null,"CountryID":"GB","AreaName":"Nottingham","Club":null,"League":null}]
答案1:
public String TeamsAsJson{ get{
JavaScriptSerializer Serializer = new JavaScriptSerializer();
return Serializer.Serialize(JsonConvert.SerializeObject(TeamHelpers.GetAllTeams(), Formatting.None));
}
private set { TeamsAsJson = value; }
}
尝试使用JSON.parse
作为:-
$("#project").autocomplete({
minLength: 0,
source: projects,
focus: function (event, ui) {
ui=JSON.parse(ui.replace(/"/g,'"'));
$("#project").val(ui.item.TeamName);
return false;
},
select: function (event, ui) {
ui=JSON.parse(ui.replace(/"/g,'"'));
$("#project").val(ui.item.TeamName);
$("#project-id").val(ui.item.TeamName);
$("#project-description").html(ui.item.AreaName);
$("#project-icon").attr("src", "images/" + ui.item.icon);
return false;
}
})
答案2:
public String TeamsAsJson{ get{
JavaScriptSerializer Serializer = new JavaScriptSerializer();
return Serializer.Serialize(JsonConvert.SerializeObject(TeamHelpers.GetAllTeams(), Formatting.None));
}
private set { TeamsAsJson = value; }
}
视图模型:
public String TeamsAsJson{ get{
JavaScriptSerializer Serializer = new JavaScriptSerializer();
return Serializer.Serialize(JsonConvert.SerializeObject(TeamHelpers.GetAllTeams(), Formatting.None));
}
private set { TeamsAsJson = value; }
}
c#变量正在进行html编码。解决办法是:
var projects = @Html.Raw(Model.TeamsAsJson)
注意:这是从问题中摘录出来的,并代表OP发布在这里。同样的错误。。。JSON实际上在运行时返回
var projects=[{“TeamID”:1,“TeamName”:“Bilborough Broncos”,“ClubID”:null,“LeagueID”:null,“IsPremium”:false,“PremiumLength”:null,“PremiumStart”:null,“CountryID”:“GB”,“arename”:“诺丁汉”,“Club”:null,“League”:null}]
,而不是前面提到的内容,然后尝试这个ui=JSON.parse(ui)…在select和focus中…而不是在单个元素上应用它…当我这样做时,它不会让我这样做,它会说“{expected”@user3381024…请参阅更新的答案…同样的错误被抛出。然而,它被抛出在我的代码中的var.62行声明上,即“var projects=@Model.TeamsAsJson”控制器是什么样子的。看起来您正在使用非标准MVC方式错误地将对象转换为JSON。我已将您的自我答案移至“答案”部分。以后,请将问题和答案分开。