userManager.AddToRoleAsync() - Error: role does not exist

I can't post comments yet to ask you, so, does your error say user admin does not exist, or role does not exist? I tried to duplicate your code on my end, and if the user doesn't exist you'll get a "user can't be null" error. However, if the role doesn't exist, you'll get a "Role [role] does not exist" error.

I assume that you already have the role added into your database? Here is some code I used in my seed method that essentially does what you want, minus using the views to do it:

        // Add the Admin role to the database
        IdentityResult roleResult;
        bool adminRoleExists = await _roleManager.RoleExistsAsync("Admin");
        if (!adminRoleExists)
        {
            _logger.LogInformation("Adding Admin role");
            roleResult = await _roleManager.CreateAsync(new IdentityRole("Admin"));
        }

        // Select the user, and then add the admin role to the user
        ApplicationUser user = await _userManager.FindByNameAsync("sysadmin");
        if (!await _userManager.IsInRoleAsync(user, "Admin"))
        {
            _logger.LogInformation("Adding sysadmin to Admin role");
            var userResult = await _userManager.AddToRoleAsync(user, "Admin");
        }

EDIT

The way you're adding roles right now leaves the NormalizedName field in the Role table null, which I believe is used by the framework for adding roles to users. Try one of the following to add a role to the database instead of what you're currently doing:

var result = await _roleManager.CreateAsync(new IdentityRole(rolename));

Or this may also work (haven't tested this one though):

[HttpPost]
public IActionResult Create(string rolename)
{
        _db.Roles.Add(new IdentityRole()
        {
            Name = rolename,
            NormalizedName = rolename.ToUpper()
        });
        _db.SaveChanges();
        ViewBag.ResultMessage = "Role created successfully!";
        return RedirectToAction("Index");
}

Make sure when you are creating an AspNetRole the NormalizedName should not be null in order for the UserManager to work properly.

NormalizedName should be upper-case using .ToUpper()