Scraping HTML via async controller & classes + HTML agility pack
public async Task&lt;ActionResult&gt; UpdateHandicap()



We add the Async suffix to methods that are marked with the async keyword. This is a naming convention that as you'll see in a moment Entity Framework follows too.




var results = db.Users.ToList();



You can use the Users directly in the loop, you don't have to call ToList first.




foreach (Users user in results)
{
    user.Index = await Calculations.GrabIndexValue(user.GHID);
    db.Entry(user).State = EntityState.Modified;
    db.SaveChanges();
}



The async calls are incomplete. SaveChanges would still block so you also want to use the

await db.SaveChangesAsync();


but do you really need to call SaveChanges in a loop? This could be bad for the performance. I think you should do it after the loop:

foreach (var user in db.Users)
{
    user.Index = await Calculations.GrabIndexValue(user.GHID);
    db.Entry(user).State = EntityState.Modified;
}
await db.SaveChangesAsync();