1

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

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

4

3 回答 3

3

代替

@Html.ValidationMessageFor(m => m.Name)

利用

@Html.ValidationMessage("Name", "*")

这允许您直接在视图中指定消息,在本例中为星号。

于 2012-11-12T18:13:05.430 回答
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,您将看到这些消息。

于 2015-06-01T09:27:47.093 回答
0
@Html.ValidationMessageFor(m => m.Name, "*")

这在标题部分包含“Site.css”css 文件后有效。在使用验证之前,您必须确保“site.css”样式类。

于 2012-11-14T13:44:35.483 回答