it-swarm.com.de

label oder @ html.Label ASP.net MVC 4

Neuling bei ASP.net MVC 4 und versucht, Razor zu verstehen. Wenn ich nur einen Text auf meiner .cshtml-Seite anzeigen möchte, kann ich ihn verwenden

<label class="LabelCSSTop">Introduction</label>

oder soll ich verwenden:

 @Html.Label("STW", htmlAttributes: new { @class = "LabelCSSTop" })

Ich bin mir nicht sicher, ob einer dem anderen vorgezogen wird oder ob beides in Ordnung ist. Wenn der letztere das Label-Tag trotzdem ausgibt, sollte ich mich nur an den ersteren halten?

Wenn ich nur ein Textfeld anzeigen wollte, kann ich dies auch tun:

<input id="txtName" type="text" />

oder soll ich das machen:

@Html.TextBox("txtName", "")

Gibt es eine Situation, in der ich das @Html über dem normalen HTML-Tag verwenden sollte?

Danke im Voraus!!

12
alpha

Bei Ihrem Label-Snippet ist das eigentlich egal. Ich würde mich für die einfachere Syntax entscheiden (einfaches HTML).

Die meisten Hilfsmethoden erlauben es Ihnen auch nicht, ein anderes Element zu umgeben. Dies kann eine Überlegung sein, wenn Sie sich entscheiden, einen zu verwenden oder nicht.

Stark typisierte Entsprechungen

Beachten Sie jedoch, dass Sie mit den @Html.[Element]For<T>() -Methoden wichtige Funktionen erhalten. Beachten Sie das "For" am Ende des Methodennamens.

Beispiel:

@Html.TextBoxFor( o => o.FirstName )

Hiermit wird die ID/Name-Erstellung basierend auf der Objekthierarchie (die für die Modellbindung entscheidend ist) durchgeführt. Es werden auch unauffällige Validierungsattribute hinzugefügt. Diese Methoden verwenden einen Ausdruck als Argument, das auf eine Eigenschaft im Modell verweist. Die Metadaten dieser Eigenschaft werden vom MVC-Framework abgerufen, und als solches "weiß" es mehr über die Eigenschaft als ihr Gegenstück mit Zeichenfolgenargumenten.

Sie können damit auch stark typisierten UI-Code verarbeiten. Visual Studio hebt Syntaxfehler hervor, während dies mit einer Zeichenfolge nicht möglich ist. Ansichten können optional zusammen mit der Lösung kompiliert werden, um zusätzliche Überprüfungen der Kompilierungszeit zu ermöglichen.

Andere Überlegungen

Gelegentlich führt eine HTML-Hilfsmethode auch zusätzliche nützliche Aufgaben aus, z. B. Html.Checkbox und Html.CheckboxFor, wodurch auch ein verstecktes Feld erstellt wird, das mit dem Kontrollkästchen einhergeht. Ein weiteres Beispiel sind die URL-bezogenen Methoden (z. B. für einen Hyperlink), die routenabhängig sind.

<!-- bad -->
<a href="/foo/bar/123">my link</a>

<!-- good -->
@Html.ActionLink( "my link", "foo", "bar", new{ id=123 } )

<!-- also fine (perhaps you want to wrap something with the anchor) -->
<a href="@Url.Action( "foo", "bar", new{ id=123 } )"><span>my link</span></a>

Die Verwendung von einfachem HTML im Vergleich zu Code, der ausgeführt werden muss, wenn die Ansicht gerendert wird, hat einen leichten Leistungsvorteil, obwohl dies nicht der entscheidende Faktor sein sollte.

13
Tim Medora

Kommt darauf an, was du tust.

Wenn Sie SPA (Single-Page Application) haben, können Sie Folgendes verwenden:

<input id="txtName" type="text" />

Andernfalls wird die Verwendung von HTML-Hilfsprogrammen empfohlen, damit die Steuerelemente an Ihr Modell gebunden sind.

2
Ahmed El Kilani

Wenn Sie nur Text in Ihrer .cshtml-Seite anzeigen möchten, empfehle ich @ Html.Label nicht und auch, das HTML-Label nicht zu verwenden. Das Element stellt eine Beschriftung in einer Benutzeroberfläche dar. und Sie werden sehen, dass im Fall von @ Html.Label ein Attribut für hinzugefügt wird. Verweis auf die ID eines möglicherweise nicht vorhandenen Elements. Der Wert dieses Attributs ist der Wert des Modellfelds, in dem nicht-alphanumerische Zeichen durch Unterstriche ersetzt werden. Sie sollten @ Html.Display oder @ Html.DisplayFor verwenden, möglicherweise umbrochen in einige einfache HTML-Elemente, zeilenweise oder p.

2
R. Schreurs

Die Hilfsprogramme dienen hauptsächlich zum Anzeigen von Beschriftungen, Formulareingaben usw. für die stark typisierten Eigenschaften Ihres Modells. Mithilfe der Hilfsprogramme und von Visual Studio Intellisense können Sie die Anzahl der Tippfehler, die Sie beim Generieren einer Webseite machen können, erheblich reduzieren.

Vor diesem Hintergrund können Sie Ihre Elemente weiterhin manuell für beide Eigenschaften Ihres Ansichtsmodells oder für Elemente erstellen, die Sie anzeigen möchten und die nicht Teil Ihres Ansichtsmodells sind.

1
Tommy

Wenn es um Etiketten geht, liegt es an Ihnen, was Sie bevorzugen. Einige Beispiele für nützliche HTML-Helfer-Tags sind z

  • Beim Umgang mit Hyperlinks, da der HTML-Helper das Routing vereinfacht
  • Wenn Sie mit @Html.LabelFor, @Html.TextBoxFor Usw. An Ihr Modell binden
  • Wenn Sie @Html.EditorFor Verwenden, können Sie ein bestimmtes Verhalten zuweisen und in einer Editoransicht suchen
1