2017-04-21 10 views
1

Invokeメソッドとは何ですか?Invoke&InvokeAsyncメソッドとは何ですか?

以下は私のviewcomponent()メソッドです。

public IViewComponentResult Invoke() 
{ 
ViewBag.SelectedCategory = RouteData?.Values["category"]; 
return 
View(repository.Products.Select(x=>x.Category).Distinct().OrderBy(x=>x)); 
} 

これは匿名機能ですか?

この関数の名前は何ですか?

は私が 「FUNC」と「起動」を変更しようとしましたが、そこには、構文エラーはありませんが、実行時エラーが発生しました。

"Invoke"という名前で複数のメソッドを持ち、単一のビューコンポーネントクラスで異なるパラメータを受け取ることは可能ですか?この

@await Component.InvokeAsync("Here is the name of your view component") 

「component.InvokeAsynkは」は、コンポーネントのクラスに行くとInvokeメソッドを見つけ、これを次のされ

私たちはヘルパーを使用し、このための部分的なビューをレンダリングするために、そのビューコンポーネントの使用を知っています方法

答えて

1

ViewComponentInvokeおよびInvokeAsyncのメソッドは、ビューコンポーネントのロジックを定義するメソッドです。これらは無名関数ではありません。それらは単に名前がInvokeInvokeAsyncの通常のC#メソッドです。

ビューコンポーネントで両方を定義する必要はなく、そのうちの1つを定義するだけで十分です。 1つだけの場合、Invokeとし、funcに名前を変更してメソッドの名前を変更しましたが、実際にはコンパイラエラーは発生しません。コードを実行すると、ランタイムエラーが発生します。あなたのビューコンポーネントを呼び出すAsp.Netコアフレームワークコードは、InvokeまたはInvokeAsyncメソッドを持つと予想しており、ViewComponentにはどちらも存在しません。

ビューコンポーネントに任意の名前を付けることができますが、呼び出すために呼び出されるメソッドの名前はInvokeまたはInvokeAsyncとする必要があります。

ViewComponentは、InvokeまたはInvokeAsyncのいずれかの方法しか使用できません。 ViewComponentは、両方を持つことはできません。どちらの倍数も(異なるパラメータを使用して)倍数にすることはできません。これを行おうとすると、次の実行時エラーが発生します。

View component 'ViewComponents.NameOfComponent' must have exactly one public method named 'InvokeAsync' or 'Invoke'.

+0

サーさんその回答は良いと思われます。そして私はあなたがそれに答えても構わないと思っています。わかっている。しかし、私は名前を変更するために何をしなければならない – Ahmad

+0

私はいくつかの混乱がある場合、あなたのskyp Idまたは他の何らかの情報源を共有したいと思います。 質問を投稿する前に**スタックオーバーフローチャットルーム**であなたを見つけようとしましたが、成功しませんでした – Ahmad

+1

答えに答えが更新されました。質問は、stackoverflowコミュニティが質問と回答の利益を得るようにスカイプではなく、stackoverflow経由でなければなりません。 –

関連する問題