wake-up-neo.com

Legen Sie das Klassenattribut in ASP.NET MVC Razor View auf Html.EditorFor fest

Wie Sie wissen, können wir in Rasierapparaten Attribute auf actionLink oder textBox setzen, aber wie können wir Attribute auf @Html.EditorFor setzen? Gibt es eine Möglichkeit, das Attribut auf @Html.EditorFor wie folgt festzulegen: new {@class = "myclass"}?

31
Saeid

Der Helfer EditorFor rendert die entsprechende Editorvorlage. Es könnte sich um die Standardvorlage oder um eine benutzerdefinierte Vorlage handeln, die Sie geschrieben haben. Diese Vorlage kann ein beliebiges Markup enthalten. Es könnte viele DOM-Elemente enthalten. Nun verstehen Sie, dass es keinen Sinn macht, eine Klasse auf eine Vorlage anzuwenden. Auf welches Element in dieser Vorlage soll diese Klasse angewendet werden? Mit dem TextBoxFor-Hilfsprogramm wissen Sie beispielsweise, dass ein einzelnes Eingabefeld generiert wird. Daher ist es sinnvoll, über das Anwenden einer CSS-Klasse zu sprechen (genau dies erlaubt das Argument htmlAttributes).

Davon abgesehen gibt es verschiedene Techniken. Ein Beispiel, das ich sehr mag, ist das Erstellen eines Metadatenanbieters für benutzerdefinierte Annotationsmodelle und benutzerdefinierte Editorvorlagen, wie im folgenden Blogbeitrag beschrieben.

Eine andere Möglichkeit besteht darin, die Standardvorlagen (wie im Blogbeitrag von Brad Wilson gezeigt) anzupassen und verschiedene HTML-Attribute auf das entsprechende Eingabefeld anzuwenden. Nehmen wir ein Beispiel mit der Editorvorlage string.cshtml:

@model string
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, ViewData)

Und jetzt, wenn Sie diese Editorvorlage für eine String-Eigenschaft in Ihrem Ansichtsmodell rendern möchten:

@Html.EditorFor(x => x.SomeStringProperty, new { @class = "myclass" })
45
Darin Dimitrov

Versuche dies: 

@Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } })
55
10gler

Fügen Sie benutzerdefinierte Attribute als hinzu

@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @data_minlength = "3", @class = "form-control input-md", @placeholder = "Name", @required = "required", @id= "txtName"} })

Ersetzen Sie data- in @data_ 

Es wird korrekte HTML mit Daten-

8
Kamran Qadir

Ich glaube, dass das Originalplakat korrekt war

  • jederEditorFor()

    erstellt ein HTML element-Hauptelement (obwohl möglicherweise noch andere vorhanden sind), es wäre daher sehr hilfreich, ein object übergeben zu können, das HTML attributes enthält, um sich auf diesen Haupt-HTML element zu bewerben.

  • Ich möchte dasHTML 5'Autofokus' Attribut auf ein Feld in jedem Formular anwenden ,

  • aber ich möchte NICHT benutzerdefinierten Code schreiben müssen.

  • Ich hasse die Tatsache, dass ich derzeit darauf beschränkt bin, beispielsweise @Html.TextBoxFor() für dieses Feld zu verwenden, nur um bestimmte Attribute auf den input element anwenden zu können.

  • Die EditorFor()-Methode hat zwar einen parameter, den sie additionalViewData nennen, aber ich habe keine Ahnung, was Sie damit machen können, und die Suche nachMSDNhat mir nicht geholfen.

2
user1738579

Verwenden Sie diesen einfachen Code, um Klasse zu @Html.EditorFor() hinzuzufügen. 

@Html.EditorFor(x => x.Demo)

<style type="text/css">

#Demo
{
   color:#fff;
   width: 50%;
}

</style>

dieser Code funktioniert gut für MVC3

0
Bilal