当使用Html.EditorFor并传入我的ViewModel时,可能不会让每个单独的表单元素显示错误消息。
我正在使用验证摘要,因此错误消息会显示两次。一次为表单元素,然后再在摘要中。
答案 0 :(得分:0)
您可以通过使用“*”从ValidationMessage中删除错误消息来删除单个错误,如下例所示。但是,如果您传递了错误消息,则会显示该消息。
<%= Html.ValidationMessage("PropertyName", "*") %>
如果您传递了错误消息,则会显示该消息。对于编辑器模板或使用新的lambda版本的Html.Helper也是如此,如下所示
Html.ValidationMessageFor(m=>m.prop,...)
希望有所帮助,
涡流
答案 1 :(得分:0)
您可以创建自定义验证摘要并使用特殊键添加所有错误(在此示例中我使用_FORM。例如:
private const string VALIDATIONSUMMARY_HMTL = "<div class=\"input-validation-error\">{0}</div>";
public static string ValidationSummary(this HtmlHelper helper, bool customErrorOnly)
{
return ValidationSummary(helper, customErrorOnly, "_FORM");
}
public static string ValidationSummary(this HtmlHelper helper, bool customErrorOnly, string errorName)
{
if (helper.ViewData.ModelState.IsValid)
{
return null;
}
string list = "<ul>";
bool displayList = false;
foreach (KeyValuePair<string, ModelState> pair in helper.ViewData.ModelState)
{
foreach (ModelError error in pair.Value.Errors)
{
if (pair.Key.ToUpper() == "_FORM" || !customErrorOnly)
{
list += "<li>" + error.ErrorMessage + "</li>";
displayList = true;
}
}
}
list += "</ul>";
if (!displayList)
{
return null;
}
return string.Format(VALIDATIONSUMMARY_HMTL, list);
}
如果要添加特定错误:
ViewData.ModelState.AddModelError("_FORM", "My error message");