Was ist der Unterschied zwischen Html.Textbox und Html.TextboxFor?
Was ist der Unterschied zwischen Html.Textbox und Html.TextboxFor?
Antworten:
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:
TextBoxFor
generiert Ihre Eingabenamen für Sie. Dies ist normalerweise nur der Eigenschaftsname, aber für Eigenschaften komplexer Typen kann ein Unterstrich wie "Kundenname" enthalten sein.TextBoxFor
Version 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 .
Das TextBoxFor
ist eine neuere MVC Eingangserweiterung in MVC2 eingeführt.
Der Hauptvorteil der neueren stark typisierten Erweiterungen besteht darin, dass Fehler / Warnungen zur Kompilierungszeit und nicht zur Laufzeit angezeigt werden.
Siehe diese Seite.
http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx
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.
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.