У меня есть объект с именем Пользователь , со свойством Имя , с атрибутом Обязательный .
public class User
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
}
Я создал текстовое поле, вот так:
<%= Html.TextBoxFor(model => model.Name) %>
При включении проверки на стороне клиента Имя идеально проверяется на стороне клиента.
Однако, если я создам ViewModel, где User теперь является свойством
public class UserModel
{
public User TheUser { get; set; }
public string SomeOtherProperty { get; set; }
}
и создай мое текстовое поле
<%= Html.TextBoxFor(model => model.TheUser.Name) %>
тогда проверка на стороне клиента завершится неудачно. Форма публикуется без проверки клиента, обнаружив ошибку.
Похоже на javascript window.mvcClientValidationMetadata заполняется, как и раньше, без заметной разницы.
Что дает? Что-то мне нужно сделать?
Я использую
- ASP.NET MVC 2 RC2 (с .NET 3.5 / VS2008)
- MicrosoftMvcJQueryValidation.js из последней загрузки Futures
Edit:
При ближайшем рассмотрении window.mvcClientValidationMetadata не заполняется должным образом. Правила валидации не указаны:
{"FieldName":"TheUser.Name","ReplaceValidationMessageContents":true,"ValidationMessageId":"TheUser_Name_validationMessage","ValidationRules":[]}