不同的验证消息和验证摘要消息

时间:2012-11-12 17:32:00

标签: c# asp.net-mvc asp.net-mvc-4

我想向用户显示不同的验证消息。一个是验证消息列表,另一个是我的编辑框附近。让我们看看代码:
我的模特:

[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 任何帮助将不胜感激。

3 个答案:

答案 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”样式类。