比较字段未显示错误消息

时间:2015-04-13 10:10:54

标签: c# asp.net-mvc

我有一个模型如下 -

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" })

显示所需字段的消息,但此处ErrorMessage&#34;密码和确认密码必须相同&#34;没有显示。我已经提到了这个12 SO链接。我究竟做错了什么?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

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

使用@Html.ValidationSummary(excludePropertyErrors: false)在一个位置显示所有验证错误,或将@Html.ValidationMessageFor(x => x.Password)放在输入字段附近。

答案 1 :(得分:1)

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

您希望使用@Html.ValidationMessageFor(x => 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]
}