TagBuilder.MergeAttributes funktioniert nicht wie erwartet

8

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?

    
Catalin 28.09.2012, 07:34
quelle

3 Antworten

16

Die Methode TagBuilder.MergeAttributes funktioniert nicht so, wie Sie es erwarten. Dies ist der genaue Code dieser Methode:

%Vor%

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:

%Vor%     
tpeczek 28.09.2012, 08:52
quelle
26

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.

    
Darren 08.11.2012 11:42
quelle
4

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%     
David McClelland 05.02.2014 21:00
quelle