2016-10-15 4 views
-1

Я пытаюсь Вызвать синхронизации компонент с помощью ASP.NET 1.0 Сердечник поэтому у меня есть:синхронизации Invoke компонентов в ASP.NET MVC Ядро 1,0

public class ExampleViewComponent : ViewComponent { 

    public IViewComponentResult InvokeAsync() { 
    ExampleModel model = new ExampleModel(2); 
    return View(model); 
    } 

} 

и пытается вызвать его следующим образом:

@ Component.InvokeAsync ("Пример")

Но тогда я получаю ошибку:

InvalidOperationException: Method 'InvokeAsync' of view component 'MVCApp.Components.ExampleViewComponent' should be declared to return Task<T>.  

Я использую InvokeAsync потому что Invoke был удален в 1.0.

Как мне это сделать?

ответ

1

InvalidOperationException: Method 'InvokeAsync' of view component 'MVCApp.Components.ExampleViewComponent' should be declared to return Task<T>.

Вы должны прочитать сообщение и следовать инструкциям, оно не может стать яснее!

public class ExampleViewComponent : ViewComponent { 
    public Task<IViewComponentResult> InvokeAsync() { 
     ExampleModel model = new ExampleModel(2); 

     // returns a finished task 
     return Task.FromResult<IViewComponentResult>(View(model)); 
    } 
} 
+0

Неужели я ошибаюсь или вам не хватает async в методе возврата? И тогда вам нужно добавить ожидание в код метода, который не имеет никакой операции async. Это проблема. –

+1

Нет, вам не нужно 'async'. Только если вы действительно выполняете операцию async и используете 'await'. Однако вы можете вернуть завершенную задачу. Я обновлю его – Tseng

+0

Я использовал wait.Desay (0); как обходное решение, но ваше решение лучше. Просто отмечен как ответ. –