2017-04-21 971 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)); 
} 

這是匿名函數嗎?

這個函數的名字是什麼?

我試圖改變「調用」「功能」但沒有語法錯誤,但運行時發生錯誤。

是否有可能具有「調用」名稱和接收不同參數的多個方法在單個視圖組件類中。

我知道視圖組件使用來呈現局部視圖,爲此我們使用助手是該

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

「component.InvokeAsynk」去你的組件類,並認爲Invoke方法,然後遵循此方法

回答

1

ViewComponent上的InvokeInvokeAsync方法是定義視圖組件邏輯的方法。這些不是匿名功能。它們是常規的c#方法,其名稱只有InvokeInvokeAsync

你不需要在你的視圖組件中定義它們,定義其中的一個就足夠了。如果你只有一個,比如說Invoke,那麼你將它重命名爲func,那麼你已經改變了方法的名字,當它是真的時候,你不會得到一個編譯器錯誤,當你運行你的代碼時會發生運行時錯誤,因爲調用視圖組件的Asp.Net核心框架代碼預計它具有InvokeInvokeAsync方法,而您的ViewComponent現在都沒有。

你可以給你的視圖組件命名,但是調用它的方法的名稱必須叫做InvokeInvokeAsync

A ViewComponent只能有一個InvokeInvokeAsync方法。 A ViewComponent不能同時具有,也不能有任何一個的倍數(具有不同的參數)。試圖這樣做會產生以下運行時錯誤:

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

+0

先生其似乎很好,你回答。我也願意你回答。我明白。但我必須做什麼來更改名稱 – Ahmad

+0

有一件事更多先生,如果我有一些混淆,你想分享你的skyp Id或其他來源與你聯繫。 ,因爲之前發佈的問題,我嘗試找到你在**堆棧溢出聊天室**,但沒有成功 – Ahmad

+1

我更新了我的答案來回答。問題應該是通過stackoverflow而不是Skype,以便stackoverflow社區獲得問題和答案的好處。 –