У меня есть следующие модели на моем сайтеRegex на аннотации данных ведет себя по-разному на подсвойствах
[Table("UserProfile")]
public class UserProfile
{
[Key]
public int UserId { get; set; }
[DisplayName("E-Mail")]
[MaxLength(60)]
[RegularExpression(@"[a-zA-Z0-9_\\.-][email protected]([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}", ErrorMessage = "Invalid e-mail")]
public string MailAddress { get; set; }
public UserInfo userInfo{ get; set; }
}
public class UserInfo
{
[Key, ForeignKey("UserProfile")]
public int UserProfileUserId { get; set; }
public virtual UserProfile UserProfile { get; set; }
[UIHint("PhoneNumbers")]
public List<PhoneNumber> PhoneNumbers { get; set; }
[...]
}
public class PhoneNumber
{
public int Id { get; set; }
[MaxLength(20)]
[DisplayName("Téléphone")]
[RegularExpression(@"^[+]?[0-9\s]{2,20}$", ErrorMessage = "Invalid")]
public string Phone { get; set; }
public int UserInfoId { get; set; }
[ForeignKey("UserInfoId")]
public Physician UserInfo { get; set; }
}
Когда я зарегистрировать пользователь, у меня есть следующий вид:
<div class="editor-label">
@Html.LabelFor(model => model.MailAddressTemp)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MailAddressTemp)
@Html.ValidationMessageFor(model => model.MailAddressTemp)
</div>
И валидация оК
Однако, когда я пытаюсь мо dify почтовый адрес, с другой точки зрения
<div class="editor-label">
@Html.LabelFor(model => model.UserProfile.MailAddress)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserProfile.MailAddress)
@Html.ValidationMessageFor(model => model.UserProfile.MailAddress)
</div>
Он не работает с той же самой почты
Может кто-нибудь объяснить мне, почему регулярное выражение проверки не работает на подсвойств?
Кстати, у меня есть подтверждение номеров телефонов во время регистрации и изменения учетной записи.
Спасибо
У вас не может быть проверка на стороне клиента на вложенных объектах. Аналогичная проблема уже была описана здесь: http://stackoverflow.com/questions/17153252/applying-data-annotations-to-sub-properties-of-the-view-model-in-mvc –
Что вы можете сделать, это для создания PartialView, строго введенного в UserProfile, а затем передать ваш вложенный объект UserProfile в этот PartialView. Вы также можете использовать некоторую стороннюю библиотеку проверки, которая позволяет проверять на стороне клиента на вложенных объектах (например, FluentValidation). –