Skip to content

Instantly share code, notes, and snippets.

@keithbloom
Last active December 17, 2015 07:18
Show Gist options
  • Save keithbloom/5571384 to your computer and use it in GitHub Desktop.
Save keithbloom/5571384 to your computer and use it in GitHub Desktop.
public class FoodViewModel
{
public string FavouriteFood { get; set; }
}
public ActionResult UpdateFood(FoodViewModel viewModel)
{
if(ModelState.IsValid)
{
UpdateStats(viewModel.FavouriteFood);
return RedirectToAction("Thanks");
}
return View(viewModel);
}
public ActionResult UpdateFood(FoodViewModel viewModel)
{
if(viewModel.FavouriteFood.Contains("House"))
{
ModelState.AddModelError("","House is not a food");
}
if (!ModelState.IsValid)
{
return View(viewModel);
}
UpdateStats(viewModel.FavouriteFood);
return RedirectToAction("Thanks");
}
public interface IValidatableObject
{
IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
}
public class FoodViewModel : IValidatableObject
{
public string FavouriteFood { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (FavouriteFood.Contains("House"))
{
yield return new ValidationResult("Sorry, house is not a food");
}
}
}
var validationResults = new List<ValidationResult>();
var viewModel = Activator.CreateInstance(typeof (FoodViewModel)) as IValidatableObject;
if (viewModel != null)
{
validationResults.AddRange(viewModel.Validate(null));
}
foreach (var validationResult in validationResults)
{
Console.WriteLine(validationResult.ErrorMessage);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment