Die meisten MVC-Hilfsmethoden haben eine XXXFür Variante. Sie sollen in Verbindung mit einer konkreten Modellklasse verwendet werden. Die Idee besteht darin, dem Helper zu ermöglichen, das entsprechende "name" -Attribut für das Formulareingabesteuerelement basierend auf der Eigenschaft abzuleiten, die Sie im Lambda angeben. Dies bedeutet, dass Sie "magische Zeichenfolgen" eliminieren, die Sie andernfalls verwenden müssten, um die Modelleigenschaften mit Ihren Ansichten zu korrelieren. Zum Beispiel:
Html.Hidden("Name", "Value")
bewirkt:
<input id="Name" name="Name" type="hidden" value="Value">
In Ihrem Controller, könnten Sie eine Aktion haben wie:
[HttpPost]
public ActionResult MyAction(MyModel model)
{
}
Und ein Modell wie:
public class MyModel
{
public string Name { get; set; }
}
Die rohe Html.Hidden
verwenden wir d oben wird mit der Name
Eigenschaft im Modell korreliert. Es ist jedoch etwas unangenehm, dass der Wert "Name" für die Eigenschaft mit einem String ("Name") angegeben werden muss. Wenn Sie die Name
-Eigenschaft auf dem Modell umbenennen, wird Ihr Code unterbrochen und der Fehler wird etwas schwierig herauszufinden. Auf der anderen Seite, wenn Sie HiddenFor
verwenden, erhalten Sie von der geschützt:
Html.HiddenFor(x => x.Name, "Value");
Nun, wenn Sie die Name
Eigenschaft umbenannt, werden Sie einen expliziten Laufzeitfehler anzeigt, dass das Objekt nicht gefunden werden kann. Darüber hinaus erhalten Sie weitere Vorteile der statischen Analyse, z. B. das Abrufen von Dropdown-Listen der Mitglieder nach der Eingabe x.
.
Danke Kirk, gute Informationen darüber, was im Controller und Modell passiert. –
Tatsächlich erhalten Sie einen COMPILER-Fehler, kein RUNTIME-Fehler, wenn Sie die Eigenschaft umbenennen. Das ist der Punkt, der beim Kompilieren versagt, nicht ausgeführt wird. –
@Mystere Man, die Ansichten werden normalerweise nicht kompiliert (wenn Sie Ihre Lösung erstellen). [Es ist ein manueller Schritt] (http://stackoverflow.com/questions/383192/compile-views-in-asp-net-mvc), damit VS sie für Sie kompiliert. –