如何在不转换为json的情况下将C#数组用于javascript数组?

时间:2018-01-01 08:39:33

标签: javascript c# webforms

我有一个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数组?

2 个答案:

答案 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了,所以不需要解析它(好像它是一个字符串)。