@ Html.ValidationMessageFor()自定义validationMessage始终显示

时间:2011-06-10 15:45:20

标签: forms asp.net-mvc-3

我试图在ASP.NET MVC3中为@Html.ValidationMessageFor()使用不同的消息。这工作正常,但似乎总是显示消息,例如如果我这样做:

@Html.ValidationMessageFor(model => model.TimesheetEntry.Product)

然后错误仅在我提交表单时显示且无效。但是,如果我这样做:

@Html.ValidationMessageFor(model => model.TimesheetEntry.Product, "custom error")

然后在我最初加载页面时显示该消息。我可能在这里做了一些愚蠢的事情,任何帮助都会受到赞赏。

4 个答案:

答案 0 :(得分:39)

您是否尝试过this question的CSS?

.field-validation-valid
{
    display: none;
}
.validation-summary-valid
{
    display: none;
}

答案 1 :(得分:8)

您的 httpGet ActionResult方法

中可能有模型参数

答案 2 :(得分:2)

我也遇到了这个问题并做了#34; hack"从上面添加两个带有display none的css-classes。然后我发现如果我将我的错误消息移动到我的模型并在ValidationMessage中使用空字符串作为参数解决了所有问题,我就能删除这两个类。

在模型中

 [Display(Name = "Caption"), Required(ErrorMessage = "Caption is required")]

在cshtml中

@Html.EditorFor(m => m.caption, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(m => m.caption, "", new { @class = "text-danger" })

答案 3 :(得分:1)

我没有在MVC 3中玩过足够的验证,所以我只是在解决这个问题的方式。

我会看这个: http://msdn.microsoft.com/en-us/library/dd470929.aspx

是的,标准MSDN文档,但ValidationMessageFor()方法声明:

使用指定的消息为指定表达式表示的每个数据字段返回验证错误消息的HTML标记。

听起来,就像我应该总是返回消息一样,即使你没有提供自定义消息作为字符串。看起来还有其他方法可以更好地满足您对指定URI的需求。