Ich habe vor ungefähr einem Monat das selbe Problem und habe mit dieser Erweiterungsmethode fertig gemacht
%Vor%Und danach kannst du es so benutzen
%Vor%BEARBEITEN (nach Paul ist Kommentar ):
Die Verwendung von data-xxx
html-Attributen kann mithilfe des Konstruktors der System.Web.Routing.RouteValueDictionary Klasse, da Unterstriche nicht automatisch in Minuszeichen umgewandelt werden.
Verwenden Sie die Methode System.Web.Mvc.HtmlHelper.AnonymousObjectToHtmlAttributes stattdessen: löst dieses Problem.
AKTUALISIERTER CODE (nur Körper der Erweiterungsmethode)
%Vor%Die Verwendung der unten angegebenen Erweiterungsmethode führt zu ähnlichen Ergebnissen, aber diese ist vielleicht fragiler:
%Vor%Erweiterung:
%Vor%Wir sind eigentlich nur auf dasselbe Problem gestoßen. Wir haben schließlich eine Erweiterungsmethode mit überladenen Parametern implementiert, die einen booleschen Wert annimmt, der angibt, ob das Steuerelement deaktiviert werden soll oder nicht. Wir fügen einfach das "disabled" -Attribut hinzu, wenn es angemessen ist, und lassen den eingebauten HtmlHelper das schwere Heben behandeln.
Erweiterungsklasse und Methode:
%Vor% Dann müssen Sie nur auf Ihre neue Klasse verweisen und @Html.TextBoxFor(m => m.SomeValue, new { @class = "someClass" }, <Your bool value>)
Es ist erwähnenswert, dass Sie diese Erweiterungen für alle TextBoxFor-Überladungen definieren müssen, die Sie verwenden möchten, aber es scheint ein vernünftiger Kompromiss zu sein. Sie können den gleichen Code auch für andere HtmlHelper verwenden, denen Sie die Funktionalität hinzufügen möchten.
Tags und Links asp.net-mvc-3