Tôi đang cố đăng nhập và đăng ký biểu mẫu vào cùng một chế độ xem. Tôi đã làm tất cả mọi thứ được đề xuất trong các câu hỏi khác nhưng vấn đề của tôi vẫn không cố định.MVC Nested View Model with Validation
Đây là quan điểm của bố mẹ tôi authentication.cshtml:
@model Eriene.Mvc.Models.AccountVM
<div class="row">
<div class="col-md-6">
@Html.Partial("_Login", Model.Login ?? new Eriene.Mvc.Models.LoginVM())
</div>
<div class="col-md-6">
@Html.Partial("_Register", Model.Register ?? new Eriene.Mvc.Models.RegisterVM())
</div>
</div>
Trong partials của tôi, tôi sử dụng các hình thức như thế này:
@using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @id = "login-form", @role = "form", @class = "login-form cf-style-1" }))
Một trong những hành động là như thế này:
[HttpPost]
[AllowAnonymous]
public ActionResult Register(RegisterVM registerVM)
{
if (ModelState.IsValid)
{
User user = new Data.User();
user.Email = registerVM.Email;
user.ActivationCode = Guid.NewGuid().ToString();
user.FirstName = registerVM.FirstName;
user.LastName = registerVM.LastName;
user.Password = PasswordHelper.CreateHash(registerVM.Password);
return RedirectToAction("Index", "Home");
}
return View("Authentication", new AccountVM() { Register = registerVM });
}
Và đây là các mô hình tôi đang sử dụng:
public class AccountVM
{
public LoginVM Login { get; set; }
public RegisterVM Register { get; set; }
}
public class RegisterVM
{
[Required]
public string Email { get; set; }
[Required]
public string FirstName { get; internal set; }
[Required]
public string LastName { get; internal set; }
[Required]
public string Password { get; internal set; }
[Compare]
public string PasswordRetype { get; internal set; }
}
public class LoginVM
{
[Required]
public string Email { get; set; }
[Required]
public string Password { get; set; }
public bool RememberMe { get; set; }
}
Trong sổ đăng ký hành động, thuộc tính Email của VM có giá trị nhưng một số khác là null. ModelState.IsValid là false. Tôi đang làm gì sai?
Thiên Chúa! tôi tạo tha t properteis bằng cách tái cấu trúc, tôi không biết chúng là nội bộ. Xin lỗi vì điều vô nghĩa này. Cảm ơn bạn rất nhiều! –