[英]JSON deserialization on client side unable to parse the json string
在點擊錨標記后,控制器的動作被點擊。 在查詢字符串中傳遞了一個參數。 我正在使用以下代碼將List轉換為序列化的json字符串。
public ActionResult EmployeeVote(string regionID)
{
var nomineeList = NomineeModel.GetNomineeByRegionID(Convert.ToInt16(regionID));
ViewBag.NomineeList = JsonConvert.SerializeObject(nomineeList,Formatting.None);
return View(ViewBag);
}
這個json字符串我認為字符串的制作方式存在一些問題。
[{"Id":0,"EmpId":1,"FirstName":"First Last","Email":"mail@xyz.com","Description":null,"RegionID":0}]
在客戶端。 但是模型列表在反序列化時給出了錯誤。
$(function () {
var modelList = JSON.parse('@ViewBag.NomineeList');
$(modelList).each((function () { //some logic});
});
我想執行一個遍歷循環以遍歷模型列表以創建一些動態元素。 有幫助嗎??
問題是@ViewBag.NomineeList
將對json字符串進行HTML編碼。 您需要防止這種情況,但仍要確保該字符串是有效的JavaScript字符串。
在控制器中:
ViewBag.NomineeList = new JavaScriptSerializer().Serialize(
JsonConvert.SerializeObject(nomineeList, Formatting.None)
);
JavaScriptSerializer
確保將字符串保存為在JS中使用,因此對新行進行了編碼等。
然后,在視圖中:
var modelList = JSON.parse(@Html.Raw(ViewBag.NomineeList));
Html.Raw
防止HTML編碼 JavaScriptSerializer
已完成此操作 更新:我添加了一個示例,您無需使用JavaScriptSerializer
即可使其工作。 但我重新考慮了潛在的危險,因此將其刪除。 堅持使用JavaScriptSerializer
上述方法,這是更安全的。
這是一個廣告解決方案:
更換 ”””
ViewBag.NomineeList = JsonConvert.SerializeObject(nomineeList,Formatting.None).Remove(" "");
還可以嘗試使用http://json.codeplex.com/ 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.