asp.net mvcのbind属性に関する問題が発生しています。汎用型モデルのバインドと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; }
}
とこのようになり、これを提出する方法:
public ActionResult SubmitProfile([Bind(Exclude="IsSystemAdmin")]EditUserView<Admin> iuserview)
あなたは上記の方法を見ればあなたとbind属性に気づくでしょう、私はこのようになりますカスタムのViewModelを持っています'Exclude = "IsSystemAdmin"'。管理モデルには、 "IsSystemAdmin"という名前のブール型プロパティがあり、そのパーミッションレベルが上がります。明らかに、私は管理者がこのフィールドの真の値をポストバックするだけで自分自身をシステム管理者にすることはできません。
"IsSystemAdmin"と "User.IsSystemAdmin"の両方をexcludeプロパティで試してみましたが、いずれもIsSystemAdmin変数の更新を停止しませんでした。このシナリオでバインド属性を動作させる方法はありますか、これはDefaultモデルバインダーのバグですか?