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);
}
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Because your method signature is async Task<ActionResult>, you need to await a method call. The async version of ToList() is ToListAsync(). So you’ll just call that method with the preceding await in front of it giving you await db.Beers.ToListAsync(). Assign that variable to your model, and you should be gold.
Complete method:
// GET: Destination
[HttpGet]
public async Task<ActionResult> IndexVM()
{
var model = new BeerIndexVM();
using (var db = new AngularDemoContext())
{
model.Beers = await db.Beers.ToListAsync();
}
return Json(model, JsonRequestBehavior.AllowGet);
}
I would also add an http verb attribute on the method, although in this particular instance it’s not required.
Method 2
One thing that seems to be missing is your “AcceptVerbs” annotation.
[AcceptVerbs(HttpVerbs.Get)]
public async Task<ActionResult> MethodName()
{
return json(model, JSonRequestBehavior.AllowGet);
}
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0