2009-08-24 13 views
2

Eine ähnliche Frage gestellt wurde here in storing information in a given html element.jQuery Kern/Daten oder benutzerdefinierte Attribute (Data-Driven)

Ich bin zu jQuery noch grün, aber ich bin auf der Suche nach dem besten Weg, um Informationen auf der Seite zu speichern. Ich habe einen Repeater, der ein Bild pro Gegenstand enthält. Diese Bilder sind anklickbar und können ein bestimmtes jQuery-Ereignis auslösen. Das Problem, das ich habe, ist, dass die Objekte, an die der Repeater gebunden ist, einige spezifische Informationen (wie "Subtext", "LargerImage" usw.) enthalten, auf die ich von der Seite aus zugreifen möchte.

Core/Daten in jQuery führt dies problemlos durch, aber wir müssten immer noch die jQuery-Anweisung aus C# erstellen, da alle Daten auf dem Server gespeichert sind. Um dies ein wenig zu verdeutlichen, speichert dies Informationen auf der Seite von einer Datenbank, die ein bisschen anders sind als willkürliche Informationen, die durch jQuery verfügbar gemacht werden.

Ich beschränke diese Frage nicht auf "wie man ein benutzerdefiniertes Attribut an ein Element bindet", weil ich auf eine Idee gekommen bin, ein JS Struct aus dem C# -Codebehind zum Speichern von Informationen zu generieren, aber ich vermeide es Codes, die Codeszenarien generieren (oder versuchen).

Benutzerdefinierte Attribute von HTML5 (dh „Daten-Subtext“) ist auch eine Möglichkeit, wie ich leicht die aus dem Ereignisse ItemDataBound hinzufügen:

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

ich dies ein wenig verwirrt auf Browser-Unterstützung bin spezifisches Attribut, oder wenn es bereits so früh im Spiel Best Practice ist. Wenn benutzerdefinierte Attribute der richtige Weg sind, ist dies eine einfache Änderung. Wenn jQuery das gleiche erreichen kann, würde ich gerne auf diese Weise gezeigt werden, zumindest für mein eigenes Verständnis.

Alle Gedanken werden sehr geschätzt.

Antwort

2

Ich beantworte diese Frage nur für die Protokollierung von Stackoverflow, da dies die Lösung ist, die ich für dieses Szenario vorgeschlagen habe. Ein AJAX-Aufruf ist für größere Datensätze völlig gerechtfertigt und ist eine Richtung, in die ich auf jeden Fall gehen würde.

Ich ging weiter mit dem „daten“ -Feld in der Spezifikation HTML5, durch die jQuery meta-data plugin. bereitgestellt

Ich schrieb eine kurze Erweiterungsmethode auf der Web.UI.AttributeCollection Klasse namens „AddMetaData“, die akzeptiert eine IList sowie eine Zeichenfolge "Key", um die Anfügung an ein bestimmtes Seitenelement zu erleichtern.

Ich markiere dies noch nicht als die Antwort, da es vielleicht ein Community-Feedback zu meiner eigenen Richtung geben könnte.

+0

Danke für den Link zu diesem Plugin, es scheint ziemlich nützlich zu sein. Ich war überrascht zu sehen, dass es 36KB ist. –

0

Um zu klären, was in ASP.NET passiert, werden die Objekte, an die der Repeater auf dem Server gebunden ist, zerstört, sobald die Seite dem Client bereitgestellt wird, und dann bei jedem Seitenpostback neu erstellt.

Es klingt, als ob Sie eine Art Tooltip-Effekt erzielen möchten, bei dem der Inhalt vom Server über AJAX abgerufen wird. Es gibt zahlreiche verschiedene Tooltip Optionen zur Verfügung

, die dazu verwendet werden können. Sie können dann eine Webservice- oder Seitenmethode einrichten, um die relevanten Daten von Ihrer Datenquelle abzurufen.

Natürlich könnten Sie den Inhalt im HTML-Code rendern lassen, der an den Client gesendet wird, wenn die Anfrage verarbeitet wird, und diesen Markup einfach ausblenden. Schreiben Sie dann Ihr eigenes Plugin, um das Markup in der von Ihnen gewünschten Form anzuzeigen.

+0

Eine AJAX-Anfrage war mir in den Sinn gekommen, aber da die Menge an Daten, die benötigt werden, um voll funktionsfähig zu sein, so klein ist, entscheide ich mich, sie alle auf einmal zu laden. Ich denke, das Verhalten könnte als Tooltip-ish, mehr wie ein Vorschaufenster (dh markieren Sie eine Auswahl und einige zusätzliche Informationen Änderungen irgendwo auf der Seite) angesehen werden. Wie ich den Originaldatensatz auf der Seite speichern kann, ist, wo ich etwas verloren habe. –

+0

Wie viele Artikel und wie viele Daten für jeden Artikel haben Sie? Ist es wahrscheinlich, dass ein Benutzer die zusätzlichen Informationen für alle Elemente auf der Seite oder die Hälfte der Elemente oder nur eines sehen möchte? –

+0

4 Artikel maximal pro Seite und ~ 5 benutzerdefinierte Attribute (Zeichenfolgen <20 Zeichen) jeweils. Diese Information wird bei jedem Klick aktualisiert, der nur einen betrifft (nur einer wird zu einem bestimmten Zeitpunkt vollständig angezeigt). –

Verwandte Themen