I am trying to handle customValidation, using class object ValidationAttribute to my Model class. I cant seem to achieve correctly and need some help to improve my logic. The logic i want here when leaving@Html.EditorFor(). Must validate error from model/custom-class. I debug it does not hit any of my controller. The form does saves well on db, need validation to work.
// Model
[Required(ErrorMessage = "This field is required")]
[CustomValidation(ErrorMessage = "This field is required")]
public int CellNumber { get; set; }
// CustomValidation.cs
public class CustomFormValidation:ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var registration = (RegistrationTrainingForm)validationContext.ObjectInstance;
if(registration.CellNumber==null)
{
return new ValidationResult("This field is required");
}
return base.IsValid(value, validationContext);
}
}
// Controller
//GET:TrainingRegForm/Create/WebRequest.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SubmitRegDetails([Bind(Include= "Id, Title, FirstName, LastName, Position, Company, StreetAddress, StreetAddressLine, City, StateProvince, ZipCode,Email, CellNumber, DietaryRequirement")]TrainingRegForm eNtsaTraining)
{
if(ModelState.IsValid)
{
eNtsaTraining.Id = Guid.NewGuid();
db.TrainingRegs.Add(eNtsaTraining);
db.SaveChanges();
return RedirectToAction("SaveRegForm");
}
// Validates when empty.
if(ModelState.IsValid)
{
return RedirectToAction("SaveRegForm");
}
return View(eNtsaTraining);
}