Здравствуйте!
Есть вот такая модель для создания/редактирования пользователя:
Модель
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
public class UserEditViewModel
{
public string Id { get; set; }
public UserEditMode EditMode { get; set; }
[Required(ErrorMessage = "Данное поле обязательно для заполнения")]
[RegularExpression(@"[A-Za-z0-9]+", ErrorMessage = "Логин может состоять только из символов английского алфавита и цифр")]
[Display(Name = "Логин")]
public string UserName { get; set; }
[Required(ErrorMessage = "Данное поле обязательно для заполнения")]
[RegularExpression(@"[A-Za-z0-9._-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}", ErrorMessage = "Некорректный адрес")]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email")]
public string Email { get; set; }
[RegularExpression(@"[0-9-+]{11,12}", ErrorMessage = "Номер телефона может состоять только из цифр (может начинаться с \"+7\")")]
[DataType(DataType.PhoneNumber)]
[Display(Name = "Телефон")]
public string PhoneNumber { get; set; }
[Required(ErrorMessage = "Данное поле обязательно для заполнения")]
[DataType(DataType.Password)]
[Display(Name = "Пароль")]
public string Password { get; set; }
[Required(ErrorMessage = "Данное поле обязательно для заполнения")]
[Compare("Password", ErrorMessage = "Пароли не совпадают")]
[DataType(DataType.Password)]
[Display(Name = "Подтвердите пароль")]
public string PasswordConfirm { get; set; }
[Required(ErrorMessage = "Данное поле обязательно для заполнения")]
[RegularExpression(@"[A-Za-zа-яА-Я -]+", ErrorMessage = "Фамилия может содержать только символы русского или английского алфавита, а так же пробел и тире")]
[Display(Name = "Фамилия")]
public string NameF { get; set; }
[Required(ErrorMessage = "Данное поле обязательно для заполнения")]
[RegularExpression(@"[A-Za-zа-яА-Я -]+", ErrorMessage = "Имя может содержать только символы русского или английского алфавита, а так же пробел и тире")]
[Display(Name = "Имя")]
public string NameI { get; set; }
[RegularExpression(@"[A-Za-zа-яА-Я -]+", ErrorMessage = "Отчество может содержать только символы русского или английского алфавита, а так же пробел и тире")]
[Display(Name = "Отчество")]
public string NameO { get; set; }
[Required(ErrorMessage = "Данное поле обязательно для заполнения")]
[Display(Name = "Пол")]
public Sex Sex { get; set; }
[Required(ErrorMessage = "Данное поле обязательно для заполнения")]
[DataType(DataType.Date)]
[Display(Name = "Дата рождения")]
public DateTime DateBirth { get; set; }
[Display(Name = "Роли")]
public ICollection<string> RolesAll { get; set; }
public ICollection<string> RolesSelect { get; set; }
[Display(Name = "Активный")]
public bool Active { get; set; }
public UserEditViewModel()
{
RolesAll = new List<string>();
RolesSelect = new List<string>();
}
}
Т.к. данная модель используется и для редактирования, то возникает проблема с валидацией полей Password, они же обязательны для заполнения... как в представлении это изменить (без JS, я его пока не знаю)?
вот кусок представления:
Представление
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
@if (Model.EditMode == UserEditMode.create)
{
<div class="form-row">
<div class="form-group col-md-6">
<label asp-for="Password" class="control-label"></label>
<input asp-for="Password" class="form-control">
<span asp-validation-for="Password" class="text-danger"></span>
</div>
<div class="form-group col-md-6">
<label asp-for="PasswordConfirm" class="control-label"></label>
<input asp-for="PasswordConfirm" class="form-control">
<span asp-validation-for="PasswordConfirm" class="text-danger"></span>
</div>
</div>
}
else
{
... ???
}
Заранее спасибо!