I have been getting problems like these for a while but once and for all would like to know what's going on :)
I have a simple ASP.NET MVC view which is bound to a view model class MemberViewModel.
MemberViewModel contains a Linq To Sql entity object that my form is primarily bound to named Member, however I do have about three other form fields bound to a child class named Member.User.
Member contains personal info about the user, and Member.User contains Username + Password information, both of which are stored in separate tables in the DB.
Now as I stated the view's model object uses a custom view-model class entitled MemberViewModel, the contents of which are as follows:
[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;
}
}
You can see how there is only a single reference to Member. Member is a Linq to Sql object and inside it has it's reference to User. Password + ConfirmPassword and form only fields and do not have an equivalent counterpart in Linq To Sql.
Now my problem is, whenever I submit the form my ModelState.IsValid property always returns false stating the model error being The EncryptedPassword field is invalid.
Now regardless of whether I add [Bind(Exclude = "Member.User.EncryptedPassword")] to my MemberViewModel as a class attribute, or on the partial class for User itself as [Bind(Exclude = "EncryptedPassword")] the ModelState.IsValid continually states it is invalid.
- How can I get this to function and exclude child properties from model state validation?
- How does Bind Exclude truly work and what is the best practice for child objects and working with model binding in conjunction with view models?
Kindest Regards, GONeale
string(SO filler chars. here)