Html.Textbox VS Html.TextboxFor

Antworten:

116

Letztendlich produzieren beide das gleiche HTML, aber Html.TextBoxFor () ist stark typisiert, während Html.TextBox dies nicht ist.

1:  @Html.TextBox("Name")
2:  Html.TextBoxFor(m => m.Name)

wird beide produzieren

<input id="Name" name="Name" type="text" />

Was bedeutet das für die Nutzung?

Im Allgemeinen zwei Dinge:

  1. Die Eingabe TextBoxForgeneriert Ihre Eingabenamen für Sie. Dies ist normalerweise nur der Eigenschaftsname, aber für Eigenschaften komplexer Typen kann ein Unterstrich wie "Kundenname" enthalten sein.
  2. Wenn Sie die eingegebene TextBoxForVersion verwenden, können Sie die Überprüfung der Kompilierungszeit verwenden. Wenn Sie also Ihr Modell ändern, können Sie überprüfen, ob Ihre Ansichten fehlerhaft sind.

Es wird allgemein als bessere Vorgehensweise angesehen, die stark typisierten Versionen der in MVC2 hinzugefügten HtmlHelpers zu verwenden .

David Glenn
quelle
7

IMO ist der Hauptunterschied, dass Textbox nicht stark typisiert ist. TextboxFür ein Lambda als Parameter, der dem Helfer das with-Element des Modells mitteilt, das in einer typisierten Ansicht verwendet werden soll.

Sie können mit beiden das Gleiche tun, sollten jedoch nach Möglichkeit typisierte Ansichten und TextboxFor verwenden.

Jonathan
quelle
3

Html.TextBox und Html.DropDownList sind nicht stark typisiert und erfordern daher keine stark typisierte Ansicht. Dies bedeutet, dass wir jeden gewünschten Namen fest codieren können. Andererseits sind Html.TextBoxFor und Html.DropDownListFor stark typisiert und erfordern eine stark typisierte Ansicht, und der Name wird aus dem Lambda-Ausdruck abgeleitet.

Stark typisierte HTML-Helfer bieten auch eine Überprüfung der Kompilierungszeit.

Da wir in Echtzeit meistens stark typisierte Ansichten verwenden, bevorzugen Sie die Verwendung von Html.TextBoxFor und Html.DropDownListFor gegenüber ihren Gegenstücken.

Unabhängig davon, ob wir Html.TextBox & Html.DropDownList ODER Html.TextBoxFor & Html.DropDownListFor verwenden, ist das Endergebnis dasselbe, dh sie erzeugen denselben HTML-Code.

In MVC2 werden stark typisierte HTML-Helfer hinzugefügt.

Yogesh Yadav
quelle