2017-02-19 4 views
0

MSDN上のチュートリアルからASP.Net MVCを学びながら1つのパラメータで動作しているようですが、私はとして使用されているDisplayFor方法を参照してください。 @Html.DisplayFor(modelItem => item.Releasedate)DisplayFor方法はMSDNあたりとして、少なくとも2つのパラメータが必要ですが、それだけで

しかし、ドキュメントには少なくとも2つのパラメータ(here)が指定されているようです。

もう一つの問題:()modelItemパラメータは=>の右側で使用されることはありませんから、私は交換してみましたmodelItemしかし"Type args for method cannot be inferred from usage..."言う赤い波線取得:私の主な懸念があることである

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

をドキュメンテーションはDisplayForメソッドが少なくとも2つのパラメータを必要としていることを示していますが、チュートリアルで見たところでは1つのパラメータしかなく、ラムダ式でした!

答えて

1

DisplayForは、HtmlHelperクラスのextension methodである。これは、MSDNのドキュメントに表示される最初の引数がHtmlHelperクラスであり、この拡張メソッドを呼び出す2つの方法があることを意味します。

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

またはプレーン静的メソッドとして:

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

基本的に拡張メソッド最初の引数(好ましい方法)を省略することができ、その場合にHtmlHelperクラスのインスタンスに

いずれのメソッドを既存のクラスに追加することなく、それらのクラスのコードを変更して、それらの新しいメソッドを第一級の市民のように使用することができます。

+0

これは役に立ちました。十分な特権がないのであなたの返信に投票できませんでした:しかし、それは投票によって "記録されました"と言いました!ドキュメントから呼び出す2つの方法を私がどのように理解しているのでしょうか?私は最後の6時間このトピックを読んでいますが、そのような情報を見つけることができませんでした! – Mani

+0

ドキュメントを使用すると、これを理解できませんでした。拡張メソッドは.NETの基本機能であり、ASP.NET MVC固有のものではありません。そのため、まず.NETを学び、プラットフォームの多くの基本機能を使用するASP.NET MVCに入ることをお勧めします。 –

+0

ありがとうダーリン。 modelItemが使われていないのに、 '()'が 'modelItem => item.Property'の代わりに'()=> item.Property'を使うことができない理由を明らかにすることができますか? – Mani

関連する問題