У меня есть пользовательский валидатор, который проверяет, существует ли значение поля в таблице базы данных (если это так, тогда проверка верна), отладка кода фактически выполняет проверку, НО, когда она ложна, выдает следующее исключение:
System.Data.Entity.Validation.DbEntityValidationException: 'Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.'
При проверке подробностей ошибка возникает, когда проверка возвращает ложное условие IsValid (false)
Класс проверки выглядит следующим образом:
public class dotValidator : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
string valRut = value.ToString();
valRut = valRut.ToUpper();
valRut = valRut.Replace(".", "");
valRut = valRut.PadLeft(valRut.Length + 10, '0');
using (entity1 db = new entity1())
{
var validation = db.viewDot.Where(x => x.RUT_DV == valRut).FirstOrDefault();
if (validation == null)
{
return new ValidationResult(this.FormatErrorMessage(validationContext.DisplayName));
}
return ValidationResult.Success;
}
}
}
Проверка модели:
[dotValidator(ErrorMessage="Value doesnt exists! Check the field again.")]
public string rutColaborador { get; set; }
И в строке POST db.SaveChanges()
отображается исключение:
[HttpPost]
public ActionResult AddReg(licenciasUsuario lic, string FileUpload)
{
using (entity1 db = new entity1())
{
if (ModelState.IsValid) {
//DO STUFF TO STORE INTO DE DB HERE
//Exception here!
db.SaveChanges();
return Json(new { success = true, message = "Row added." }, JsonRequestBehavior.AllowGet);
}
else
{
return ViewBag.Message;
}
}
}
Могу ли я "пропустить" исключение и показать вместо него @Html.ValidationMessageFor
?