Reputation: 141
My model looks like this:
public class Meeting : IValidatableObject
{
public string Id { get; set; }
[Required]
public string Start_time { get; set; }
[Required]
public string End_time { get; set; }
[Required]
public DateTime Date { get; set; }
[Required]
[Url]
public string Url { get; set; }
[Required]
[RegularExpression(@"^[(a-zA-Z)' '(a-zA-Z)]*$", ErrorMessage = "Characters are not allowed.")]
public string Owner { get; set; }
[Required]
[RegularExpression(@"^[(a-zA-Z)' '(a-zA-Z)]*$", ErrorMessage = "Characters are not allowed.")]
public string Participant { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
List<ValidationResult> results = new List<ValidationResult>();
DateTime dt, dt1;
if(DateTime.TryParse(Start_time, out dt) == false)
{
results.Add(new ValidationResult("Start time wrong", new[] { "Start time" }));
}
if (DateTime.TryParse(End_time, out dt1) == false)
{
results.Add(new ValidationResult("End time wrong", new[] { "End time" }));
}
if (string.Compare(Start_time, End_time) == 1)
{
results.Add(new ValidationResult("Time Conflict", new[] { "Time" }));
}
return results;
}
}
And I don't know how to get all errors in JSON both from model itself and IEnumerable<ValidationResult> Validate
method
My POST method has this realization:
[HttpPost]
public IActionResult Create([FromBody] Meeting meet)
{
if (ModelState.IsValid)
{
Guid obj = Guid.NewGuid();
meet.Id = obj.ToString();
_dataAccessProvider.AddMeetingRecord(meet);
return Ok("Meeting was successfully added");
}
return BadRequest(ModelState);
}
I tried to use IEnumerable<ModelError> allErrors = ModelState.Values.SelectMany(v => v.Errors);
and return allErrors
in BadRequest but it didn't work
Upvotes: 2
Views: 267