У меня были такие проблемы некоторое время, но раз и навсегда хотелось бы знать, что происходит:)
У меня есть простое представление ASP.NET MVC, которое привязано к классу модели представления MemberViewModel
.
MemberViewModel
содержит объект сущности Linq To Sql, с которым моя форма в основном связана с именем Member
, однако у меня есть еще три других поля формы, связанных с дочерним классом с именем Member.User
.
Member
содержит личную информацию о пользователе, а Member.User
содержит имя пользователя + информацию о пароле, которые хранятся в отдельных таблицах в БД.
Теперь, как я уже говорил, объект модели представления использует собственный класс модели представления под названием MemberViewModel
, содержимое которого выглядит следующим образом:
[Bind(Exclude = "EncryptedPassword")]
public class MemberViewModel : ViewModel
{
public Member Member { get; set; }
public string Password { get; set; }
[DisplayName("Confirm Password")]
public string ConfirmPassword { get; set; }
public MemberViewModel() { }
public MemberViewModel(Member member, SelectList countryList)
{
Member = member;
CountryList = countryList;
}
}
Вы можете видеть, как существует только одна ссылка на Member
. Member - это объект Linq to Sql, внутри которого есть ссылка на User
. Password
+ ConfirmPassword
и формировать только поля и не иметь эквивалентного аналога в Linq To Sql.
Теперь моя проблема заключается в том, что всякий раз, когда я отправляю форму, мое свойство ModelState.IsValid
всегда возвращает false, указывая, что ошибка модели равна The EncryptedPassword field is invalid
.
Теперь независимо от того, добавляю ли я [Bind(Exclude = "Member.User.EncryptedPassword")]
к своему MemberViewModel
в качестве атрибута класса или к частичному классу для самого User
, так как [Bind(Exclude = "EncryptedPassword")]
ModelState.IsValid
постоянно утверждает, что оно недопустимо.
- Как я могу заставить это функционировать и исключить дочерние свойства из проверки состояния модели?
- Как Bind Exclude действительно работает и каков наилучший метод для дочерних объектов и работы с привязкой моделей в сочетании с моделями представления?
С наилучшими пожеланиями,
GONeale