having this code it gives me a warning : Because this call is not awaited, execution of the current method continues before the call is completed. Consider applying the 'await' operator to the result of the call.
public async Task<ActionResult> Details(Guid id)
{
var calendarEvent = await service.FindByIdAsync(id);
if (calendarEvent == null) return RedirectToAction<CalendarController>(c => c.Index());
var model = new CalendarEventPresentation(calendarEvent);
ViewData.Model = model;
return View();
}
public async Task<RedirectResult> Create(CalendarEventBindingModel binding)
{
var model = service.Create(binding);
await context.SaveChangesAsync();
return this.RedirectToAction<CalendarController>(c => c.Details(model.CalendarEventID));
}
if I do add the await
operator I get :
Error CS4034 The 'await' operator can only be used within an async lambda expression. Consider marking this lambda expression with the 'async' modifier.
if I add the async
modifier like this :
return this.RedirectToAction<CalendarController>(async c => await c.Details(model.CalendarEventID));
the error is Error CS1989 Async lambda expressions cannot be converted to expression trees
So how can I use strongly typed RedirectToAction (I'm using MVC Futures) with async controllers?
Func<Task<ViewResult>>
or whatever and then translate it into futures' version (non-async) of expression. – Briticism#pragma
seems the wrong approach to fix it though. Let's hope someone smarter comes along and fixes this. The following link seems somewhat related: #24241202 – Peristome