javascript - 在数据属性中序列化对象的最可靠方法

标签 javascript c# asp.net .net

我想知道使用 C# 序列化数据属性中的对象(例如 <div data-options="[jsonlike object]>" )的最可靠方法是什么。我想使用 $.data() 获取这些数据,如果数据没有以良好的方式写入(例如空格),jquery 无法获取正确的对象并返回一个字符串。

我可以完全访问 JSON.Net 库。

最佳答案

  1. 如果尚未安装 JSON.NET Nuget 包,请安装它。
  2. 使用它。例如,在 Razor 语法中:

    <div class="my-component" data-options="@JsonConvert.SerializeObject(new 
       {
          active = true,
          name = "Foo",
          // ...
       })">
    </div>
    
  3. 消费它:

    jQuery(function($) {
      $('.my-component').each(function() {
        var component = $(this);
        var options = component.data('options');
        component.somePlugin(options);
      });
    })
    

JsonConvert.SerializeObject()将确保对象呈现为有效的 JSON,无论是否存在任何奇怪的字符(如反斜杠)。 Razor 的@语法将确保生成的 JSON 针对 HTML 上下文正确编码,因此像 < 这样的符号也不会引起问题。

关于javascript - 在数据属性中序列化对象的最可靠方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37326914/

相关文章:

托管时网站上不加载 Javascript/CSS 文件

c# - XAML:引擎盖下

c# - 发布后 Web.Config 文件加密不起作用

javascript - 错误 : Cannot find module 'underscore' thrown in console for all Meteor commands

javascript - react 终极版 : Confused about where to define certain actions

javascript - 这是什么 Internet Explorer (javascript?) 语法错误 -2146827286?

c# - Windows Phone 8 通知和后台任务

c# - 如何在AppDomain中找到尚未加载的类型?

c# - 为什么下拉事件在asp中不起作用

css - 如何在 ListView 中轻松创建固定标题 asp.net