2017-02-19 3 views
0

zu arbeiten, während das Lernen ASP.Net MVC von Tutorial auf MSDN, ich DisplayFor Methode sehen wie bisher verwendet: @Html.DisplayFor(x => x.SomeProperty)DisplayFor Verfahren erfordert mindestens 2 Parameter pro MSDN, aber es scheint mit 1 Parameter nur

oder als: @Html.DisplayFor(modelItem => item.Releasedate)

Die Dokumentation scheint jedoch mindestens 2 Parameter anzugeben (here).

Ein weiteres Problem: da modelItem Parameter nie auf der rechten Seite des => verwendet wird, habe ich versucht zu ersetzen modelItem mit () aber rote Wellenlinie bekommen, die sagt "Type args for method cannot be inferred from usage...":

@Html.DisplayFor(()=> item.Releasedate)

Meine größte Sorge ist, dass Dokumentation zeigt DisplayFor Methode benötigt mindestens 2 Parameter, aber wo immer ich es in Tutorials sah sie nur 1 Parameter und das war ein Lambda-Ausdruck!

Antwort

1

Die DisplayFor ist eine extension method der HtmlHelper Klasse. Dies bedeutet, dass das erste Argument, das Sie in der MSDN-Dokumentation sehen, die HtmlHelper-Klasse ist und es zwei Möglichkeiten gibt, diese Erweiterungsmethode aufzurufen.

entweder an einer Instanz der HtmlHelper Klasse in welchem ​​Fall man das erste Argument weglassen kann (bevorzugter Ansatz):

@Html.DisplayFor(x => x.SomeProperty) 

oder als einfache statische Methode:

@DisplayExtensions.DisplayFor(Html, x => x.SomeProperty) 

Grundsätzlich Methoden Verlängerung Erlauben Sie fügen Sie Methoden auf vorhandenen Klassen ohne die Notwendigkeit, den Code dieser Klassen ändern und dann diese neuen Methoden verwenden, als ob sie Bürger erster Klasse waren.

+0

Oh, das war hilfreich. Ich konnte deine Antwort nicht wählen, weil ich nicht genug Privilegien habe :-) Aber es hieß bei der Abstimmung wurde "aufgezeichnet"! Könntest du mir bitte auch zeigen, wie ich diese zwei Arten des Aufrufs aus der Dokumentation verstanden habe? Ich habe zu diesem Thema für die letzten 6 Stunden gelesen, konnte aber solche Informationen nicht finden! – Mani

+0

Mit der Dokumentation konnten Sie dies nicht verstanden haben. Erweiterungsmethoden sind ein grundlegendes Feature von .NET und nicht ASP.NET MVC-spezifisch. Aus diesem Grund wird empfohlen, zunächst .NET zu lernen und dann in ASP.NET MVC zu gehen, da es viele grundlegende Funktionen der Plattform verwendet. –

+0

Danke Darin. Könnten Sie erklären, warum '()' nicht verwendet werden kann?() => Item.Property' ... anstelle von 'modelItem => item.Property' ... obwohl modelItem nicht verwendet wird? – Mani

Verwandte Themen