【问题标题】:Compare field not showing error message比较字段不显示错误消息
【发布时间】:2015-04-13 18:52:41
【问题描述】:

我有一个模型如下 -

public string Password { get; set; }
[Compare("Password", ErrorMessage = "Password and Confirm Password have to be the same")]
public string ConfirmPassword { get; set; }

在我的 HTML 中,我将代码添加为

<label>Password</label>
<span class="req">*</span>                                  
@Html.PasswordFor(x => x.Password, new { @class = "form-control form-control2", @required = "required" })
<p class="signuppace"></p>

<label>Confirm Password</label>
<span class="req">*</span>
@Html.PasswordFor(x => x.ConfirmPassword, new { @class = "form-control form-control2", @required = "required" })

显示必填字段的消息,但此处没有显示错误消息“密码和确认密码必须相同”。我已经提到了这个1,2 SO 链接。我究竟做错了什么?任何帮助将不胜感激。

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    除了使用 JavaScript(不是服务器端)执行的不显眼的客户端验证进行客户端验证之外,不要认为帮助程序添加标记来自动显示验证错误。

    您想使用@Html.ValidationMessageFor(x =&gt; x.ConfirmPassword) 来显示错误消息,或者只是使用ModelState 检查错误。

    @if (ModelState.Errors["ConfirmPassword"] != null && !string.IsNullOrWhiteSpace(ModelState.Errors["ConfirmPassword"][0]))
    {
        // Display the first error message for this field
        ModelState.Errors["ConfirmPassword"][0]
    }
    

    【讨论】:

      【解决方案2】:

      您没有显示所有相关的 cshtml,但您需要显示验证消息。

      要么使用@Html.ValidationSummary(excludePropertyErrors: false) 在一处显示所有验证错误,要么将@Html.ValidationMessageFor(x =&gt; x.Password) 放在您的输入字段附近。

      【讨论】:

        猜你喜欢
        • 2023-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 2011-02-03
        • 2013-02-26
        相关资源
        最近更新 更多