【问题标题】:How to use C# array to javascript array without converting to json?如何在不转换为 json 的情况下使用 C# 数组到 javascript 数组?
【发布时间】:2018-01-01 08:39:33
【问题描述】:

我有一个包含 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是

你好“世界”

)

有没有办法处理这个错误或以另一种方式将 C# 数组传递给 javascript 数组?

【问题讨论】:

  • 不需要解析值,值已经是JSON,尝试记录没有jQuery.parseJSON的值
  • 你在使用webmethod吗?
  • 不,我没有使用 webmethods 它只是一个列表,我想在 JS 中使用它

标签: javascript c# webforms


【解决方案1】:

您可以使用 HtmlEncode 函数。

示例代码:

string text = "you & me > them"; // 1

 // Replace > with >
 string htmlEncoded =Server.HtmlEncode(text); // 2

 // Now has the > again.
 string original =Server.HtmlDecode(htmlEncoded); // 3

输出:

Step 1: Before encoding has occurred.
String: you & me > them

Step 2: The string is encoded for HTML.
String: you &amp; me &gt; them

Step 3: String is converted back from HTML.
String: you & me > them

或者你可以在 JavaScript 端使用这个方法。

【讨论】:

  • 它在没有双引号时运行良好是消息属性这是我在 javascript 端的 json 示例 [{"Id":"1", "Message":"1233"},{"Id ":"2", "Message":"Hello "world""}] 何时使用您的示例代码?在 JSON.parse 之前?
  • 仅对 Message 变量使用此方法。 {"Id":2, "Message":"Hello "world""}
【解决方案2】:

代替

jQuery.parseJSON('<%= result %>')

简单试试

<%= result %>

例如它可能是 var myVariable = &lt;%= result %&gt;

之类的声明的一部分

由于序列化器已经生成了 JSON,并且 JSON 是 JavaScript Object Notation,因此它可以直接解释为 JavaScript 变量。 JavaScript 语句的一部分。这意味着您应该能够直接将其注入到您的 JavaScript 代码中。它已经是 JSON,所以应该不需要解析它(就像它是一个字符串一样)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 2019-05-03
    • 2020-11-20
    • 2012-04-27
    • 1970-01-01
    相关资源
    最近更新 更多