DisplayFor
funktioniert nicht wie die anderen *For
Helfer. Wie EditorFor
ist es, was als "Vorlagenhelfer" bezeichnet wird. Mit anderen Worten, was es rendert wird durch eine Vorlage gesteuert, die geändert werden kann. Wichtig ist, dass für beide Methoden, wenn Sie ihre Dokumentation in MSDN nachschlagen, Sie sehen, dass der Parameter, der normalerweise htmlAttributes
mit den anderen Helfern entsprechen würde, stattdessen auf additionalViewData
mit diesen beiden verweist. Dies liegt daran, dass ihre Ausgabe wiederum von im Wesentlichen Ansichten gesteuert wird, die ViewData
einnehmen.
Zusätzlich, mit DisplayFor
im Besonderen, die Standardvorlagen ziemlich nur den Wert, ohne HTML ausgeben. Wenn Sie beispielsweise eine String-Eigenschaft übergeben, ist die Ausgabe der Wert dieser Zeichenfolge und nichts anderes. Daher gibt es nichts, womit die HTML-Attribute verknüpft werden könnten, selbst wenn Sie sie übergeben könnten.
Wenn Sie das tun möchten, was Sie tun möchten, müssen Sie benutzerdefinierte Anzeigevorlagen erstellen. Dies kann durch Zugabe Ansichten nach types (z String
, Boolean
, Byte
etc.) genannt erfolgen oder Mitglieder der DataType
enum (CreditCard
, EmailAddress
etc.), zu Views\Shared\DisplayTemplates
. Wenn Sie beispielsweise eine Ansicht unter Views\Shared\DisplayTemplates\String.cshtml
erstellt haben, wurde diese Ansicht beim Rendern der DisplayFor
mit einer Eigenschaft des Typs string
zum Rendern verwendet. Sie könnten dann den Wert umbrechen, der sonst nur direkt in HTML Ihrer Wahl ausgegeben würde, und ViewData
verwenden, um die entsprechenden HTML-Attribute anzuwenden. Zum Beispiel:
<span class="@ViewData["class"]">@ViewData.TemplateInfo.FormattedModelValue</span>
http://stackoverflow.com/questions/11655810/how-do-i-edit-the-css-of- die-html-displayfor-method-in-mvc-3 benötigt – AAlferez