验证ASP.NET MVC中的对象而不将其传递给Action

Nel*_*sen 2 validation asp.net-mvc modelstate

在ASP.NET MVC中,您可以使用验证传递给Action的模型ModelState.IsValid()

我想验证任意对象,而不是传入的一个Model。如何使用框架的库来做到这一点?

public ActionResult IsValidSoFar()
{
    // Get a user's autosaved data
    var json = await ...
    HomeModel model = JsonConvert.Deserialize<HomeModel>(json);

    // Validate the model <---- How?        
}

public class HomeModel
{
    [Required, MaxLength(100)]
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Sam*_*m.C 5

您可以使用ValidationContext类...如下

var context = new ValidationContext(modelObject);
    var results = new List<ValidationResult>();
    var isValid = Validator.TryValidateObject(modelObject, context, results);

    if (!isValid)
    {
        foreach (var validationResult in results)
        {
            //validation errors
        }
    }
Run Code Online (Sandbox Code Playgroud)