我想向用户显示不同的验证消息。一个是验证消息列表,另一个是我的编辑框附近。让我们看看代码:
我的模特:
[StringLength(10, ErrorMessage = "{0} cannot be more than {1} characters.")]
string Name { get; set; }
在视图中:
@* in form *@
@*
My long message is here:
"Name cannot be more than 10 characters."
*@
@Html.ValidationSummary(false)
@*
And my short validation message is here:
"*"
*@
@Html.TextBoxFor( m=> m.Name)
@Html.ValidationMessageFor(m => m.Name)
@*
But this validation message must be "*" instead of "Name cannot be more than 10 characters."
*@
我也使用@Html.ValidationMessageFor(m => m.Name, "ShortMessage")
,但没有奏效。加载页面后立即显示“ShortMessage”。验证失败后没有。
如何搞这个?我正在使用MVC4 任何帮助将不胜感激。
答案 0 :(得分:3)
而不是
@Html.ValidationMessageFor(m => m.Name)
使用
@Html.ValidationMessage("Name", "*")
这允许您直接在视图中指定消息,在本例中为星号。
答案 1 :(得分:1)
需要site.css的原因是因为CSS隐藏/取消隐藏验证摘要和验证消息。 打开site.css,您将看到以下内容:
/* styles for validation helpers */
.field-validation-error {
color: #e80c4d;
font-weight: bold;
}
.field-validation-valid {
display: none;
}
input.input-validation-error {
border: 1px solid #e80c4d;
}
input[type="checkbox"].input-validation-error {
border: 0 none;
}
.validation-summary-errors {
color: #e80c4d;
font-weight: bold;
font-size: 1.1em;
}
.validation-summary-valid {
display: none;
}
如果你没有使用site.css(就像我所拥有的那样,继承一个项目),你需要带来这些样式。
如果仍然失败,请检查后端的ModelState。如果IsValid属性读为false,您将看到消息。
答案 2 :(得分:0)
@Html.ValidationMessageFor(m => m.Name, "*")
这在标题部分包含“Site.css”css文件后起作用。在使用验证之前,您必须确保“site.css”样式类。