Я пытаюсь изменить какой-то код подстановки с помощью Identity. Я понимаю, что это не MVC, а представления с кодом позади.
Я хочу связать список объектов со списком флажков. Я могу сделать это с помощью ViewBag, но я предпочитаю использовать строго типизированные объекты, как если бы мы использовали ViewModel. Как этого добиться?
[AllowAnonymous]
public class RegisterModel : PageModel
{
private readonly SignInManager<ApplicationUser> _signInManager;
private readonly UserManager<ApplicationUser> _userManager;
private readonly ILogger<RegisterModel> _logger;
private readonly IEmailSender _emailSender;
private readonly RoleManager<IdentityRole> _roleManager;
private readonly ApplicationDbContext _context;
public RegisterModel(
UserManager<ApplicationUser> userManager,
SignInManager<ApplicationUser> signInManager,
ILogger<RegisterModel> logger,
IEmailSender emailSender,
RoleManager<IdentityRole> roleManager,
ApplicationDbContext context)
{
_userManager = userManager;
_signInManager = signInManager;
_logger = logger;
_emailSender = emailSender;
_roleManager = roleManager;
_context = context;
}
[BindProperty]
public InputModel Input { get; set; }
public string ReturnUrl { get; set; }
public class InputModel
{
[Required(ErrorMessage = "Email est obligatoire")]
[EmailAddress]
[Display(Name = "Email")]
public string Email { get; set; }
[Required(ErrorMessage = "Mot de passe est obligatoire")]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Mot de passe")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirmez le mot de passe")]
[Compare("Password", ErrorMessage = "Les 2 mots de passes ne sont pas identiques.")]
public string ConfirmPassword { get; set; }
//Profil = Role
public string Profil { get; set; }
public string NomMotif { get; set; }
public bool IsChecked { get; set; }
[BindProperty]
public List<Motif> ListMotifs { get; set; }
}
public void OnGet (string returnUrl = null) {
// Нужно ли нам создавать это, как если бы мы делали это с моделью представления?
InputModel inputModel = new InputModel();
ViewData["roles"] = _roleManager.Roles.ToList();
ViewData["motifs"] = _context.Motif.ToList();
inputModel.ListMotifs = _context.Motif.ToList();
ReturnUrl = returnUrl;
}
}
<div class="form-group">
@for (var i = 0; i < Model.Input.ListMotifs.Count;i++)
{
<div class="form-check">
<input type="checkbox" name="IsChecked_@i" asp-for="Input.ListMotifs[i].IsChecked" /> @Model.Input.ListMotifs[i].CodeMotif @Model.Input.ListMotifs[i].NomMotif <br />
</div>
}
</div>