Если вы используете Castle Validator, вы можете использовать следующее, модель можно затем передать контроллеру как обычно.
var errors = CastleValidationRunner.Validate(model);
// Add each error to the ModelState.
foreach (var error in errors)
{
var propertyName = String.Format(CultureInfo.CurrentCulture, "{0}.{1}", typeof(TModel).Name, error.PropertyName);
modelState.AddModelError(propertyName, error.ErrorMessage);
}