Ich versuche, einen HtmlHelper zu erstellen, und ich muss Benutzern erlauben, ihre eigenen benutzerdefinierten Attribute zum html-Tag hinzuzufügen.
Ich habe versucht, dies mit der TagBuilder-Klasse zu tun, aber es sieht so aus, als würde es die Attribute nicht einfach zusammenführen, sondern sie ersetzen.
Das habe ich in C # gemacht:
%Vor%Das ist meine Ansicht:
%Vor%Was mache ich falsch?
Die Methode TagBuilder.MergeAttributes
funktioniert nicht so, wie Sie es erwarten. Dies ist der genaue Code dieser Methode:
Wie Sie sehen, fügt es der Sammlung nur neue Attribute hinzu (wenn replaceExisting
auf "true" gesetzt ist, ersetzt es auch diejenigen, die bereits in der Sammlung enthalten sind). Es führt keine Werte durch und verknüpft Werte mit Logik. Wenn Sie Werte zusammenführen möchten, müssen Sie dies selbst tun:
Die MergeAttributes überschreibt die bereits im Tag vorhandenen Attribute, AddCssClass hängt den Namen an den Klassenwert an.
Also einfach umschalten und es wird funktionieren;
%Vor%AddCssClass wird an den / die Klassennamen angefügt, die mit ihm zusammengeführt werden.
Ich brauchte andere Attribute (außer nur Klasse), so dass AddCssClass () nicht ausreichend war. Ich habe eine Erweiterungsmethode geschrieben, um das zu tun, was MergeAttributes tun sollte:
%Vor%Tags und Links asp.net-mvc c# html-helper mvchtmlstring