【发布时间】:2019-12-12 14:58:14
【问题描述】:
我有一个名为 CreateStaffViewModel 的模型,它有一个密码数据注释,用于检查用户是否输入了一个大写、小写、数字和特殊字符,并且长度至少为 8 个字符。 以及用户友好的错误消息。
我的问题是在视图中错误消息被忽略并且正则表达式被显示。
public class CreateStaffViewModel : StaffViewModel
{
[RegularExpression(@"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*([^a-zA-Z\d\s])).{8,}$",
ErrorMessage = "Must include upper, lower, numeric and special characters")]
public string Password { get; set; }
[Compare(nameof(Password), ErrorMessage = "Passwords do not match")]
public string ConfirmPassword { get; set; }
}
如何使视图上的正则表达式显示用户友好的错误消息。
PS。我已经查看了答案Regular expression error message 并实施了答案。哪一个对我有用。
更新:查看代码
<form asp-action="Register">
<div asp-validation-summary="ModelOnly" 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" type="password" class="form-control" />
@*<span asp-validation-for="Password" class="text-danger"></span>*@
@Html.ValidationMessageFor(x => x.Password)
</div>
<div class="form-group">
<label asp-for="ConfirmPassword" class="control-label"></label>
<input asp-for="ConfirmPassword" type="password" class="form-control" />
<span asp-validation-for="ConfirmPassword" class="text-danger"></span>
</div>
【问题讨论】:
-
你的视图是什么样的?
-
你的代码是正确的,我测试过它显示
Must include upper, lower, numeric and special characters不是默认的错误信息。您是否尝试创建一个新的简单项目进行测试?确保模型是您视图中的CreateStaffViewModel。您能否分享一个可以重现该问题的完整简单项目? -
您在控制器中检查 Model.IsValid 吗?您介意发布控制器逻辑吗?
标签: c# regex asp.net-core