我有一个C#数组,其中包含C#模型列表:
public class AlertInfo
{
public long Id { get; set; }
public string Message { get; set; }
}
我将C#的数组转换为json并在javascript中使用,如下所示:
JavaScriptSerializer _serializer = new JavaScriptSerializer();
string result = _serializer.Serialize(myList);
在javascript中:
jQuery.parseJSON('<%= result %>')
当Message
在jQuery.parseJSON方法中包含双引号时抛出异常(例如Message is
你好“世界”
)
有没有办法处理这个错误或以另一种方式将C#数组传递给javascript数组?
答案 0 :(得分:0)
您可以使用HtmlEncode功能。
示例代码:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.js"></script>
<div ng-app="myApp" ng-controller="MyCtrl as myctrl">
{{myctrl.model|json}}
<div compile-html="myctrl.model.htmlLoaded"></div>
</div>
输出:
string text = "you & me > them"; // 1
// Replace > with >
string htmlEncoded =Server.HtmlEncode(text); // 2
// Now has the > again.
string original =Server.HtmlDecode(htmlEncoded); // 3
或者您可以在JavaScript端使用此方法。
答案 1 :(得分:0)
而不是
jQuery.parseJSON('<%= result %>')
尝试简单
<%= result %>
e.g。它可能是var myVariable = <%= result %>
由于序列化器已经生成了JSON,而JSON是JavaScript Object Notation,因此它可以直接解释为JavaScript变量。 JavaScript语句的一部分。这意味着您应该能够直接将其注入JavaScript代码中。它已经是JSON了,所以不需要解析它(好像它是一个字符串)。