在线显示ValidationResult错误

本文关键字:错误 ValidationResult 显示 在线 | 更新日期: 2023-09-27 18:27:46

这是一个类似于将ValidationResult分配给特定字段的问题?

我的视图模型如下:

    [DisplayName("Password")]
    [Required(ErrorMessage = "Password is required")]
    [StringLength(3, ErrorMessage = "Password length Should be less than 3")]
    public string Password { get; set; }
    [DisplayName("Confirm Password")]
    [Required(ErrorMessage = "Confirm Password is required")]
    [StringLength(3, ErrorMessage = "Confirm Password length should be less than 3")]       
    public string ConfirmPassword { get; set; }

public static ValidationResult ExtendedValidation(ManageUserViewModel t)
        {
            if (t.Password == t.ConfirmPassword)
                return ValidationResult.Success;
            else
                return new ValidationResult("Your passwords must match", new[] { "ConfirmPassword" });
        }

我的观点是这样的:

  @Html.ValidationSummary(true, "The user details were not saved, please see the validation results below")
  @using (Html.BeginForm("Save", "Users", FormMethod.Post))
    {
       <div class="formField">
                @Html.LabelFor(model => model.Password)
                @Html.TextBoxFor(model => model.Password)
                @Html.ValidationMessageFor(model => model.Password)
            </div>
            <div class="formField">
                @Html.LabelFor(model => model.ConfirmPassword)
                @Html.TextBoxFor(model => model.ConfirmPassword)
                @Html.ValidationMessageFor(model => model.ConfirmPassword)
            </div>

但是我的自定义验证错误显示在页面顶部,当我希望它在线显示时。

EG,长度检查错误导致在线显示,我希望我的确认也能这样做。

谢谢,dave

在线显示ValidationResult错误

有一个验证属性,它正是您试图通过自定义验证实现的。尝试添加Compare属性:

[DisplayName("Password")]
[Required(ErrorMessage = "Password is required")]
[StringLength(3, ErrorMessage = "Password length should be less than 3")]
public string Password { get; set; }
[DisplayName("Confirm Password")]
[Compare("Password", ErrorMessage = "Your passwords must match")]
[Required(ErrorMessage = "Confirm Password is required")]
[StringLength(3, ErrorMessage = "Confirm Password length should be less than 3")]       
public string ConfirmPassword { get; set; }

此外

有时我想添加其他错误,我想使用Html.ValidationMessage()显示这些错误。在服务器端验证期间,错误会添加到ModelState中。密钥与正在验证的控件的id匹配,但您也可以在中添加自己的密钥。

您可以使用:

ModelState.AddModelError("ConfirmPassword", "You've done something wrong...");

要将错误添加到ConfirmPassword属性中,该属性将显示为ConfirmPassword的验证错误。或者你可以使用不同的密钥:

ModelState.AddModelError("MyError", "You've done something wrong...");

然后,您可以使用在视图中显示该错误

@Html.ValidationMessage("MyError");