Я работаю на простом сайте со страницей регистрации в MVC, я хочу отобразить все свойства из класса User на странице, когда пользователь нажимает кнопку регистрация Я делаю это с @Html.EditorForModel, и когда нажимается кнопка «Далее», я хочу отобразить все данные, которые были введены на предыдущей странице. Я хочу сделать это с @ Html .DisplayForModel () . Я также использую дополнительные EditorTemplates для строки и DateTime и пользовательский Validator. Тем не менее, я искал в inte rnet ответы о том, как объединить все это вместе и обеспечить правильную работу.
Модель:
public class User : ValidationAttribute
{
[RegularExpression(@"^[a-zA-Z]+[ a-zA-Z-_]*$", ErrorMessage = "Error")]
[Required(ErrorMessage = "Error")]
public string Name { get; set; }
[RegularExpression(@"^[a-zA-Z]+[ a-zA-Z-_]*$", ErrorMessage = "Error")]
[Required(ErrorMessage = "Error")]
public string LastName { get; set; }
[DataType(DataType.DateTime, ErrorMessage = "Error")]
[Required(ErrorMessage = "Error")]
[DateRestriction] // Custom
public DateTime DateOfBirth { get; set; }
[Required(ErrorMessage = "Error")]
public string PlaceOfBirth { get; set; }
public double Age { get; set; }
[Required(ErrorMessage = "Error")]
[EmsoRestriction(ErrorMessage = "Error")]
public string EMSO { get; set; }
[Required(ErrorMessage = "Error")]
public string Address { get; set; }
[StringLength(4)]
[MinLength(4, ErrorMessage = "Error")]
public int PostNumber { get; set; }
[Required(ErrorMessage = "Error")]
public string Post { get; set; }
[Required(ErrorMessage = "Error")]
public string Country { get; set; }
[DataType(DataType.EmailAddress)]
[Required(ErrorMessage = "Error")]
[EmailAddress(ErrorMessage = "Error")]
public string Email { get; set; }
[Required(ErrorMessage = "Error")]
[DataType(DataType.Password)]
[DisplayName("Re-enter Password")]
[Compare("Password2", ErrorMessage = "Passwords must match")]
public string Password1 { get; set; }
[Required(ErrorMessage = "Error")]
[DataType(DataType.Password)]
[DisplayName("Re-enter Password")]
[Compare("geslo1", ErrorMessage = "Passwords must match")]
public string Password2 { get; set; }
}
Я столкнулся со следующим проблемы:
- EditorForModel правильно отображает свойства, но игнорирует все ValidationMessageFor , записанные в EditorTemplate и ValidationSummary (), и отображает некоторые дополнительные текстовые поля из ValidationAttribute .
AddUserView:
@model User
@{
ViewData["Title"] = "AddUser";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="row">
@using (Html.BeginForm("index", "Registracija"))
{
<div class="form-group">
@Html.EditorForModel()
</div>
@Html.ValidationSummary()
<br /><input type="submit" value="Next" class="btn btn-primary float-right" />
}
</div>
EditorTemplate:
@model String
<div>
@Html.TextBox("", Model, new { @class = "form-control " })
@Html.ValidationMessage("",Model)
</div>
- DisplayForModel вообще не отображает никаких элементов
ReviewUserView:
@model SpletniObrazec.Models.User
@{
ViewData["Title"] = "UserReview";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div>
@Html.DisplayForModel()
</div>
- Проверка модели всегда верна. RegistrationController:
public class RegistrationController : Controller
{
[HttpGet]
public ActionResult Index()
{
return View("~/Views/Registration/AddUser.cshtml");
}
[HttpPost]
public ActionResult Index(string Name, string LastName, DateTime DateOfBirth, string PlaceOfBirth, int Age, string Address, int PostNumber, string Post, string Country, string Email, string Password1, string Password2)
{
if (ModelState.IsValid)
{
return View("~/Views/Registration/UserReview.cshtml");
}
return View("~/Views/Registration/AddUser.cshtml");
}
}
Если у кого-то есть предложения по поводу того, что делать или где искать или что делать лучше, помогите пожалуйста.