using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Web;
|
using FluentValidation;
|
using Pcb.ApiService.Dtos;
|
|
namespace Pcb.Api.Infrastructures
|
{
|
/// <summary>
|
/// 模型验证扩展类
|
/// </summary>
|
public static class AbstractValidatorExtensions
|
{
|
/// <summary>
|
/// 视图模型验证
|
/// </summary>
|
/// <param name="viewModels">视图模型</param>
|
/// <typeparam name="TValidator">验证器</typeparam>
|
/// <typeparam name="T">视图模型类型</typeparam>
|
/// <returns>item1: true|false , item2: errormsg</returns>
|
public static Tuple<bool, ResponseInfoDto> ViewModelValidate<TValidator, T>(this IReadOnlyList<T> viewModels) where TValidator : new()
|
{
|
bool isValid = true;
|
var errors = new StringBuilder();
|
for (var i = 0; i < viewModels.Count; i++)
|
{
|
var m = viewModels[i];
|
var validator = new TValidator() as AbstractValidator<T>;
|
var validRes = validator.Validate(m);
|
if (!validRes.IsValid)
|
{
|
isValid = false;
|
errors.Append("索引[" + i + "] " + validRes.Errors.Select(x => x.PropertyName + ":" + x.ErrorMessage).Aggregate((a, b) => a + " 、" + b) + "。");
|
}
|
}
|
return new Tuple<bool, ResponseInfoDto>(isValid, new ResponseInfoDto(0, errors.ToString()));
|
}
|
}
|
}
|