Cómo comparar el valor entre el de la base de datos y el cliente .Net Core 2

Tenemos esta edición de páginas Razor (edit.cshtml) que se extiende desde el siguiente modelo de página y es muy básico, solo incluye PopulateRolesDropDownList:

public class RoleNamePageModel : PageModel
{
    public SelectList RoleNameSL { get; set; }

    public void PopulateRolesDropDownList(ApplicationDbContext _context,
        object selectedRole = null)
    {
        var rolesQuery = from d in _context.Roles
                               orderby d.Name // Sort by name.
                               select d;

        RoleNameSL = new SelectList(rolesQuery,
                    "RoleId", "Name", selectedRole);
    }

}

También en esta página Editar, agregamos:

<input type="hidden" asp-for="User.UserRoles.ElementAt(0).RoleId" name="User.Current.RoleId" />

También hacemos la [BindProperty] en el código detrás de

public ApplicationUser User { get; set; }

Necesitamos averiguar si hay un cambio en este modelo. ¿Cuál es el enfoque para hacer esto?

MEDIO AMBIENTE

.NET Core 2.2Razor Pages

UPDATE - 1:

En PostAsync, realizamos otra llamada a la base de datos:

var userRoleToUpdate = await _context.UserRoles
                                        .FirstOrDefaultAsync(m => m.UserId == id.ToString());

Solo necesitamos comparar este valor con el cambio en una lista desplegable o no. No pudimos trabajar cómo.

UPDATE - 2:

Cambiamos según lo recomendado por @NevilleNazerane a continuación:

public class AssignClubUserViewModel
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }

        public string UserName { get; set; }

        public Guid SelectedRoleID { get; set; }

    }

    [BindProperty]
    public AssignClubUserViewModel AssignClubUser { get; set; }

y agregó OnGetAsync:

public async Task<IActionResult> OnGetAsync(Guid? id)
    {
        if (id == null)
            return NotFound();

        var user = await _context.Users
                        .Include(u => u.ClubApplicationUsers)
                        .FirstOrDefaultAsync(m => m.Id == id.ToString());

        AssignClubUser.FirstName = user.FirstName;
        AssignClubUser.LastName = user.LastName;
        AssignClubUser.UserName = user.UserName;
        AssignClubUser.SelectedClubID = 
        user.ClubApplicationUsers.ElementAt(0).ClubID;

        ....

¿Es esto correcto? Obtuve el error: NullReferenceException: Arg_NullReferenceException en línea AssignClubUser.FirstName = user.FirstName;

UPDATE - 3:

Fixed creando un ModemView y luego en OnGetAsync () para la consulta, asegúrese de mapearlo con ModelView:

var user = await _context.Users
                            .Include(u => u.ClubApplicationUsers)
                            .Where(t => t.Id == id.ToString())
                            .Select(t => new AssignClubUserViewModel<ApplicationUser>
                            {
                                FirstName = t.FirstName,
                                LastName = t.LastName,
                                UserName = t.UserName,
                                SelectedClubID = t.ClubApplicationUsers.ElementAt(0).ClubID
                            }).SingleAsync();

Respuestas a la pregunta(1)

Su respuesta a la pregunta