2016-03-28 13 views
2

Ich sehe eine Menge von Codes wie folgt aus:Html-Helfer Parameter in C# Rasierapparat (ASP.NET MVC)

@Html.LabelFor(x => x.username) 
@Html.TextBoxFor(x => x.password) 

Diejenigen, sind nur Beispiele. Könnte mir bitte jemand erklären, was das x => x.username Teil bedeutet? Ich benutze immer noch HTML-Tags <input type="text"> so in meinem asp.net C# mvc-Anwendung, weil ich nicht einen Hang @Html.TextBox Stil bekommen.

Es gibt auch new Parameter wie folgt aus:

@Html.TextBoxFor(x => x.username, new {placeholder = @Html.DisplayNameFor(x => x.username}) 

Ich verstehe nicht, was das alles bedeuten. Könnte jemand bitte das erklären?

Vielen Dank im Voraus.

Antwort

0

x => x.username ist ein Lambda-Ausdruck. Sie sollten mehr über anonyme Methoden und Delegaten lesen. Aber diese stark typisierten HTML-Helfer akzeptieren einen generischen Delegaten mit der Bezeichnung Func<in T, out TResult> (kann sich nicht an die genaue Signatur erinnern), der eine Funktion darstellt, die eine T nimmt und eine TResult zurückgibt. Die T ist Ihre @Model.

@Html.TextBoxFor(x => x.UserName) = <input type="text" name="UserName" id="UserName"/>

@Html.TextBox("UserName") gleichen wie oben. Aber diese rote Schnur ist schlecht.

Versuchen Sie, Ihre Ansicht stark typisiert zu halten, so dass Sie Eigenschaften umbenennen und sich nicht um alle Ansichten kümmern müssen, die Sie auch manuell aktualisieren müssen.

new {placeholder = @Html.DisplayNameFor(x => x.username} ist ein anonymous type. Sehen Sie sich das Intellisense genauer an und sehen Sie sich an, welche Art von Methoden die Methoden akzeptieren. In diesem Fall ein object. Was ist ein anonymous type ist.

1

Die meisten Ihrer Fragen können durch Recherchen gelöst werden. Es scheint, Sie können nicht feststellen, , wie Sie die Antwort auf Ihre Fragen finden. Dies sollte Ihnen jetzt und in Zukunft helfen zu bestimmen, wie Sie die Antwort auf die meisten Fragen finden.

Könnte mir bitte jemand erklären, was das x => x.username part bedeutet?

Nun lassen Sie uns etwas Forschung betreiben. Der erste Schritt ist, wie die Methodensignatur aussieht. Eine einfache Suche nach LabelFor auf Google und unserem ersten Link zeigt ..

https://msdn.microsoft.com/en-us/library/system.web.mvc.html.labelextensions.labelfor(v=vs.118).aspx

Mit einem Bündel von Unterschriften, ich werde die ersten wählen, weil es das erste Codebeispiel entspricht ..

@Html.LabelFor(x => x.username) 

Spiele:

public static MvcHtmlString LabelFor<TModel, TValue>(
    this HtmlHelper<TModel> html, 
    Expression<Func<TModel, TValue>> expression 
) 

ich sehe der erste Parameter mit dieser beginnt, die eine Extension Method bezeichnet, die über th Der Umfang Ihrer ursprünglichen Frage, damit ich es ignorieren werde.

Die zweite Parameter ist eine Expression<Func<TModel, TValue>> expression. Google-Suche Expression Func eine ganze Reihe von nützlichen Ergebnisse liefert ..

What does this mean: Expression<Func<TModel, TValue>>

oder genauer gesagt:

Expression<TDelegate>

usw. usw. Hoffentlich jetzt Sie die Werkzeuge haben, die Forschung zu tun.

Vorgeschlagener Wert: C# Delegates, Anonymous Methods, and Lambda Expressions – O My!

Verwandte Themen