我为唯一用户名创建了验证,现在我无法编辑我的用户。这是说用户名已经被使用,这是有道理的,因为它是由我试图编辑的用户使用的。我什至不想编辑用户名,但由于这个错误,我也无法编辑任何其他字段。
如何为我的 EDIT 操作禁用唯一用户名验证?
验证器
public override bool IsValid(object value)
{
if (value == null) return false;
FinanceDataContext _db = new FinanceDataContext();
var user = _db.Users.ToList().Where(x => x.Username.ToLower() == value.ToString().ToLower()).SingleOrDefault();
if (user == null) return true;
return false;
}
行动
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(User u)
{
// Get user we want to edit
var user = _db.Users.Where(x => x.ID == u.ID).SingleOrDefault();
if (user == null) return HttpNotFound();
// Set values and save changes
user.Address = u.Address;
if (!string.IsNullOrEmpty(u.Password)) user.Password = Infrastructure.Encryption.SHA256(u.Password);
_db.SaveChanges(); // validation error
return null;
}
模型
public class User
{
public int ID { get; set; }
[Required]
[UniqueUsername(ErrorMessage = "Username is already taken")]
public string Username { get; set; }
[Required]
public string Password { get; set; }
public string Address { get; set; }
}
错误
一个或多个实体的验证失败。有关更多详细信息,请参阅“EntityValidationErrors”属性。