我正在验证表单中的大约10个输入文件。 ValidationMessageFor-tags应该在页面的顶部,所以我写的每一个都像:
@Html.ValidationMessageFor(model => model.Customer.ADDRESS.NAME)
@Html.ValidationMessageFor(model => model.Customer.ADDRESS.CITY)
等等。 我的模型看起来像这样:
[Required(ErrorMessage = Constants.ErrorMsgNameMissing)]
public string NAME { get; set; }
[Required(ErrorMessage = Constants.ErrorMsgCityMissing)]
public string CITY { get; set; }
常量是字符串。
现在,如果显示多个ValidationMessageFor,它们都在一行中。
如何在每条消息的末尾插入<br />
之类的换行符?
这不是正确的方法:
@Html.ValidationMessageFor(model => model.Customer.ADDRESS.NAME)<br />
@Html.ValidationMessageFor(model => model.Customer.ADDRESS.CITY)<br />
因为即使没有错误也会显示<br />
...;)
提前致谢。
PS:将它们显示为列表也很棒。
答案 0 :(得分:3)
我认为你真正想要的是:
@Html.ValidationSummary()
答案 1 :(得分:1)
如果可能,我会选择 @ Html.ValidationSummary()
答案 2 :(得分:1)
结帐Custom ValidationSummary template Asp.net MVC 3。如果您完全控制验证的呈现方式,我认为最适合您的情况。您可以轻松地为ValidationMessageFor
编写扩展方法。
答案 3 :(得分:1)
实际上,顶部应该是:
@Html.ValidationSummary(/*...*/)
字段验证应与各自的字段一致。
但是,如果您绝对坚持将@Html.ValidationMessageFor(/*...*/)
放在顶部,那么在CSS中调整其布局行为并忘记<br />
的
答案 4 :(得分:1)
我不确定是否有内置方式,但您可以轻松制作另一种扩展方法:
public static MvcHtmlString ValidationMessageLineFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression) {
return helper.ValidationMessageFor(expression) + "<br />";
}
那样的东西?