2017-04-21 9 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"로 "호출"을 변경하려고했지만 거기에 어떤 구문 오류가 없지만 실행시 오류가 발생했습니다.

단일 호출 구성 요소 클래스에서 "호출"이름과 여러 매개 변수를받는 여러 메서드를 사용할 수 있습니까?

나는 우리가이

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

"component.InvokeAsynk"는 구성 요소 클래스로 이동을하고 호출 방법을 발견하고이를 다음과 도우미를 사용하여 이것에 대한 부분 뷰를 렌더링하는 것을보기 구성 요소 사용을 알고 방법

답변

1

ViewComponentInvokeInvokeAsync 방법은보기 구성 요소의 논리를 정의하는 방법입니다. 이것들은 익명의 함수가 아닙니다. 그들은 단순히 이름이 InvokeInvokeAsync 인 정규 C# 메소드입니다.

두 구성 요소를 모두보기 구성 요소에 정의 할 필요는 없습니다. 그 중 하나만 정의하면 충분합니다. 코드가 하나 뿐인 경우 Invoke이라고 가정하고 코드 이름을 func으로 변경하면 컴파일러 오류가 발생하지 않습니다. 코드를 실행하면 런타임 오류가 발생합니다. 귀하의보기 구성 요소를 호출하는 Asp.Net 핵심 프레임 워크 코드는 Invoke 또는 InvokeAsync 방법을 가지고 있으며 귀하의 ViewComponent은 어느 것도 가지지 않기를 기대합니다.

뷰 구성 요소의 이름을 원하는대로 지정할 수 있지만 호출하기 위해 호출되는 메서드 이름은 Invoke 또는 InvokeAsync이어야합니다.

ViewComponentInvoke 또는 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를 통해해야합니다. –