My problem is that I've been following ASP.net MVC/API tutorials I have a working controller in the MVC side of things. For instance this works fine and returns my data in a view:
public class DestinationController : Controller
{
private ebstestEntities db = new ebstestEntities();
// GET: Destination
public async Task<ActionResult> Index()
{
return View(await db.CI_DEST_ALL_VARIABLES.ToListAsync());
}
However when I take a look at the following example, which I had working on another project, I cant seem to work out how to change it to fit in with my project controller above.
// GET: Destination
public async Task<ActionResult> IndexVM()
{
var model = new BeerIndexVM;
using (var db = new AngularDemoContext())
{
model.Beers = db.Beers.ToList();
}
return Json(model, JsonRequestBehavior.AllowGet);
}
Best Answer
Because your method signature is
async Task<ActionResult>
, you need toawait
a method call. The async version ofToList()
isToListAsync()
. So you'll just call that method with the precedingawait
in front of it giving youawait db.Beers.ToListAsync()
. Assign that variable to your model, and you should be gold.Complete method:
I would also add an http verb attribute on the method, although in this particular instance it's not required.