Asp-validation-summary =“ModelOnly”不适用于比较数据验证器

时间:2018-03-05 13:02:12

标签: validation asp.net-core

查看是否显示跨度验证但验证摘要(空白验证 - 汇总div也不存在)。如果我更改Asp-validation-summary =“全部”。我不知道为什么它不能使用ModelOnly。

我的班级

public class RegistrationViewModel
{
    [Required]
    [EmailAddress]
    [MinLength(5)]
    public string Email { get; set; }

    [Required]
    [DataType(DataType.Password)]
    public string Password { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Compare("Password")]
    [Display(Name = "Confirm Password")]
    public string VerifiedPassword { get; set; }

}

视图

<form asp-action="Registration">
                    <div asp-validation-summary="ModelOnly" val  class="text-danger"></div>
                    <div class="form-group">
                        <label asp-for="Email" class="control-label"></label>
                        <input asp-for="Email" class="form-control" />
                        <span asp-validation-for="Email" class="text-danger"></span>
                    </div>
                    <div class="form-group">
                        <label asp-for="Password" class="control-label"></label>
                        <input asp-for="Password" class="form-control" required />
                        <span asp-validation-for="Password" class="text-danger"></span>
                    </div>
                    <div class="form-group">
                        <label asp-for="VerifiedPassword" class="control-label"></label>
                        <input asp-for="VerifiedPassword" class="form-control"  required/>
                        @*<span asp-validation-for="VerifiedPassword" class="text-danger"></span>*@
                    </div>
                    <div class="form-group">
                        <input type="submit" value="Register" class="btn btn-default" />
                    </div>
                </form>

1 个答案:

答案 0 :(得分:0)

将此添加到控制器中的post方法:

 if (!ModelState.IsValid)
        {
            AddErrorsFromModel(ModelState.Values);
            return View();
        }

还将using和AddErrorsFromModel添加到控制器:

using Microsoft.AspNetCore.Mvc.ModelBinding;

private void AddErrorsFromModel(ModelStateDictionary.ValueEnumerable values)
        {
            foreach (ModelStateEntry modelState in values)
                foreach (ModelError error in modelState.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.ErrorMessage.ToString());

                }
        }