[HttpPost]
public ActionResult Edit(Car car)
{
if (ModelState.IsValid)
{
db.Entry(car).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(car);
}
这是由 MCV 4 搭建的控制器方法 我的“汽车”实体有一个唯一字段:LicensePlate。我对我的实体进行了自定义验证:
验证:
public partial class Car
{
partial void ValidateObject(ref List<ValidationResult> validationResults)
{
using (var db = new GarageIncEntities())
{
if (db.Cars.Any(c => c.LicensePlate.Equals(this.LicensePlate)))
{
validationResults.Add(
new ValidationResult("This licenseplate already exists.", new string[]{"LicensePlate"}));
}
}
}
}
如果有用,我的汽车实体:
public partial class Car:IValidatableObject
{
public int Id { get; set; }
public string Color { get; set; }
public int Weight { get; set; }
public decimal Price { get; set; }
public string LicensePlate { get; set; }
public System.DateTime DateOfSale { get; set; }
public int Type_Id { get; set; }
public int Fuel_Id { get; set; }
public virtual CarType Type { get; set; }
public virtual Fuel Fuel { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var result = new List<ValidationResult>();
ValidateObject(ref result);
return result;
}
partial void ValidateObject(ref List<ValidationResult> validationResults);
}
问题:
每次我编辑汽车时,都会引发错误:
一个或多个实体的验证失败。有关更多详细信息,请参阅“EntityValidationErrors”属性。
该错误是我的验证引发的错误,说它无法编辑,因为已经有一辆带有该牌照的汽车。
如果有人能指出我正确的方向来解决这个问题,那就太好了!我搜索了但找不到任何东西,所以即使是相关的帖子也欢迎!
注意:这个字段有一个唯一的约束,所以这个验证仍然必须为创建操作触发