2016-05-19 6 views
1

Ich frage mich, was am zuverlässigsten Weg ist, ein Objekt in einem Datenattribut (z. B. <div data-options="[jsonlike object]>") mit C# zu serialisieren. Ich möchte diese Daten unter Verwendung $ .data() und wenn Daten nicht auf eine gute Weise geschrieben werden (zum Beispiel Leerzeichen), Jquery nicht erhalten ein richtiges Objekt und gibt eine Zeichenfolge zurück.Zuverlässigste Methode zum Serialisieren von Objekten im Datenattribut

Ich habe vollständigen Zugriff auf JSON.Net-Bibliothek.

+0

was ist das Maß für "zuverlässig" hier? – Jamiec

+0

Übersteht native Konvertierung in Javascript-Objekt ohne Fehler. –

Antwort

2
  1. Installieren Sie das JSON.NET Nuget-Paket, falls Sie es noch nicht haben.
  2. Verwenden Sie es. Zum Beispiel in Razor-Syntax:

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

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

JsonConvert.SerializeObject() wird dafür sorgen, das Objekt als gültig JSON gerendert wird, unabhängig von der Anwesenheit von irgendwelchen seltsamen Zeichen wie Schrägstriche. Die @-Syntax von Razor stellt sicher, dass der resultierende JSON für einen HTML-Kontext korrekt codiert wird, sodass auch Symbole wie < keine Probleme verursachen.

Verwandte Themen