Je rencontre un problème avec l'attribut bind dans asp.net mvc. J'ai un ViewModel personnalisé qui ressemble à ceci:Liaison de modèle de type générique et BindAttribute
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; }
}
et une méthode pour soumettre ce qui ressemble à ceci:
public ActionResult SubmitProfile([Bind(Exclude="IsSystemAdmin")]EditUserView<Admin> iuserview)
si vous regardez la méthode ci-dessus, vous remarquerez l'attribut de liaison avec 'Exclude = "IsSystemAdmin"'. Le modèle admin a une propriété booléenne nommée "IsSystemAdmin" qui augmente leur niveau d'autorisation. Maintenant, évidemment, je ne veux pas qu'un admin soit capable de se faire un administrateur système juste en affichant une vraie valeur pour ce champ.
J'ai essayé "IsSystemAdmin" et "User.IsSystemAdmin" dans la propriété exclude et aucun d'entre eux n'arrête la mise à jour de la variable IsSystemAdmin. Existe-t-il un moyen de faire fonctionner l'attribut bind dans ce scénario ou s'agit-il d'un bogue dans le classeur Modèle par défaut?