2 Stimmen

jQuery Core/Data oder benutzerdefinierte Attribute (datengesteuert)

Eine ähnliche Frage wurde gestellt hier bei der Speicherung von Informationen in einem bestimmten HTML-Element.

Ich bin noch grün, um jQuery, aber ich bin für den besten Weg, um Informationen auf der Seite zu speichern suchen. Ich habe einen Repeater, der ein Bild pro Element hält. Diese Bilder sind klickbar und können ein bestimmtes jQuery-Ereignis auslösen. Das Problem, das ich habe, ist, die Objekte, die der Repeater gebunden ist, hält einige spezifische Informationen (wie "Subtext", "LargerImage", etc.), die ich möchte von der Seite zugänglich sein.

Mit Core/Data in jQuery lässt sich dies sehr gut bewerkstelligen, allerdings müssten wir die jQuery-Anweisung immer noch in C# erstellen, da alle Daten auf dem Server gespeichert sind. Um ein wenig zu klären, ist dies die Speicherung von Informationen auf der Seite aus einer Datenbank, die ein wenig anders als beliebige Informationen zur Verfügung gestellt durch jQuery ist.

Ich beschränke diese Frage nicht auf "wie man ein benutzerdefiniertes Attribut an ein Element binden", weil ich über eine Idee der Generierung einer JS-Struktur aus der C#-Code Behind zum Speichern von Informationen kam, aber ich vermeide alle Code generieren Code-Szenarien (oder versuchen,).

Benutzerdefinierte Attribute aus HTML5 (z. B. "data-subtext") sind auch eine Möglichkeit, wie ich leicht hinzufügen können, die von der itemdatabound Ereignis:

sampleImageElement.Attributes.Add("data-subtext", "And this what the image is about");

Ich bin ein bisschen verwirrt auf Browser-Unterstützung für dieses spezifische Attribut aber, oder wenn es sogar beste Praxis so früh im Spiel ist. Wenn benutzerdefinierte Attribute sind der Weg zu gehen, das ist eine einfache Änderung zu machen passieren. Wenn jQuery kann das gleiche zu erreichen, würde ich gerne in diese Richtung zumindest für mein eigenes Verständnis gerichtet werden.

Jeder Gedanke ist sehr willkommen.

2voto

Alexis Abril Punkte 6279

Ich beantworte diese Frage nur für die Aufzeichnungszwecke von Stackoverflow, da dies die Lösung ist, die ich für dieses Szenario verwendet habe. Ein AJAX-Aufruf ist völlig gerechtfertigt für alle größeren Datensätze und ist eine Richtung, die ich definitiv anders gehen würde.

Ich habe das Feld "data-" aus der HTML5-Spezifikation verwendet, das von der jQuery-Metadaten-Plugin.

Ich habe eine kurze Erweiterungsmethode für die Klasse Web.UI.AttributeCollection mit dem Namen "AddMetaData" geschrieben, die sowohl eine IList als auch einen String "Key" akzeptiert, um die Zuordnung zu einem bestimmten Seitenelement zu erleichtern.

Ich werde dies noch nicht als Antwort markieren, da es vielleicht ein Feedback der Gemeinschaft zu meiner Richtung gibt.

0voto

Russ Cam Punkte 120837

Um zu verdeutlichen, was in ASP.NET passiert, werden die Objekte, an die der Repeater auf dem Server gebunden ist, zerstört, sobald die Seite an den Client ausgeliefert wurde, und werden dann bei jedem Postback neu erstellt.

Es klingt wie Sie wollen eine Art von Tooltip-Effekt zu erreichen, wo der Inhalt vom Server durch AJAX abgerufen werden? Es sind zahlreiche verschiedene Tooltip-Optionen verfügbar

die dazu verwendet werden können. Sie könnten dann einen Webservice oder eine Seitenmethode einrichten, um die entsprechenden Daten aus Ihrer Datenquelle abzurufen.

Natürlich können Sie den Inhalt auch im HTML-Code darstellen lassen, der bei der Verarbeitung der Anfrage an den Client gesendet wird, und dieses Markup einfach ausblenden. Dann schreiben Sie Ihr eigenes Plugin, um das Markup in der von Ihnen gewünschten Form anzuzeigen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X