我有以下检查错误的类:
public bool ValidateAccountDeletion(Account account)
{
var _errors = new Dictionary<string, string>();
var accounts = _accountRepository.GetPk(account.PartitionKey);
if (_productRepository.GetPk("0000" + account.RowKey).Count() != 0)
_errors.Add("", "Account contains products");
return _errors;
}
和以下扩展类合并我的IDictionary和ModelStateDictionary
public static class ModelExtensions {
public static bool HasValue(this string value) {
return !string.IsNullOrEmpty(value) && value.Trim().Length > 0;
}
public static void Merge(this ModelStateDictionary modelState, IDictionary<string, string> dictionary) {
Guard.AgainstNullParameter(modelState, "modelState");
Guard.AgainstNullParameter(dictionary, "dictionary");
foreach(var item in dictionary) {
modelState.AddModelError(item.Key, item.Value);
}
}
当我调用validate然后尝试合并时,它看起来并不干净:
var errors = _accountService.ValidateAccount(vm.Account);
if (errors.Count > 0)
this.ModelState.Merge(errors)
有没有什么方法可以让我有一个不同的构造函数来合并,然后只输入输出 的:
_accountService.ValidateAccount(vm.Account);
我正在考虑如何做到这一点,但想不出一个简单的方法
答案 0 :(得分:4)
由于您的Merge
方法在没有错误的情况下基本上什么都不做,您可以这样做
ModelState.Merge(_accountService.ValidateAccount(vm.Account));
不需要检查错误计数。