У меня проблема с атрибутом bind в asp.net mvc. У меня есть пользовательская ViewModel, которая выглядит так:
public interface IUserView<TUser> where TUser : User
{
TUser User { get; set; }
string Email { get; set; }
string ConfirmEmail { get; set; }
string Password { get; set; }
string ConfirmPassword { get; set; }
}
public class EditUserView<TUser> : IUserView<TUser> where TUser : User
{
public virtual TUser User { get; set; }
[ValidateRegExp(RegexConstants.Email, "Invalid Email.")]
[ValidateNonEmpty("email is required.")]
public virtual string Email { get; set; }
[ValidateSameAs("Email", "confirmation email does not match.")]
public virtual string ConfirmEmail { get; set; }
public virtual string Password { get; set; }
[ValidateSameAs("Password", "confirmation password does not match.")]
public virtual string ConfirmPassword { get; set; }
}
и способ отправки этого, который выглядит следующим образом:
public ActionResult SubmitProfile([Bind(Exclude="IsSystemAdmin")]EditUserView<Admin> iuserview)
если вы посмотрите на вышеупомянутый метод, вы заметите атрибут связывания с 'Exclude = "IsSystemAdmin"'. Модель администратора имеет логическое свойство с именем «IsSystemAdmin», которое повышает уровень их разрешений. Теперь, очевидно, я не хочу, чтобы администратор мог сделать себя системным администратором, просто отправив верное значение для этого поля.
Я пробовал "IsSystemAdmin" и "User.IsSystemAdmin" в свойстве exclude, и ни один из них не мешает обновлению переменной IsSystemAdmin. Есть ли способ заставить атрибут связывания работать в этом сценарии, или это ошибка в связывателе модели по умолчанию?