如何为asp.net mvc ValidationMessageFor创建可重用的解决方案

时间:2016-08-22 13:26:28

标签: c# asp.net-mvc asp.net-mvc-5 asp.net-mvc-helpers

我目前有以下代码段:

@ErrorHelper.ShowError("Street")

如何让这个可重复使用?创建一个MVC助手?局部视图?这不可能吗?

我想有这种解决方案,以便我可以将它用于我所有不同的领域。我正在使用工具提示来获取工具提示消息。如果没有if语句,工具提示将包含一个空字符串(但仍会显示)。

我希望有一个解决方案,例如我可以做到这一点

d:\ram\software\dlib latest 22nd aug\dlib-master\dlib\array2d\../algs.h(286): error C2144: syntax error : 'bool' should be preceded by ';' [D:\Ram\Software\Dlib latest
 22nd Aug\dlib-master\examples\build\dlib_build\dlib.vcxproj]
d:\ram\software\dlib latest 22nd aug\dlib-master\dlib\array2d\../algs.h(287): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
 [D:\Ram\Software\Dlib latest 22nd Aug\dlib-master\examples\build\dlib_build\dlib.vcxproj]
d:\ram\software\dlib latest 22nd aug\dlib-master\dlib\array2d\../algs.h(287): error C2143: syntax error : missing ',' before '&' [D:\Ram\Software\Dlib latest 22nd Aug\
dlib-master\examples\build\dlib_build\dlib.vcxproj]
d:\ram\software\dlib latest 22nd aug\dlib-master\dlib\array2d\../algs.h(289): error C2803: 'operator >' must have at least one formal parameter of class type [D:\Ram\S
oftware\Dlib latest 22nd Aug\dlib-master\examples\build\dlib_build\dlib.vcxproj]

1 个答案:

答案 0 :(得分:1)

我有自己的验证消息助手来自动添加引导类样式

public static MvcHtmlString MyValidationMessageFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string tag)
{
    return htmlHelper.ValidationMessage(tag, new { @class = "text-danger" });
}
public static MvcHtmlString MyValidationMessageFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
    return htmlHelper.ValidationMessageFor(expression, "", new { @class = "text-danger" });
}

并使用@Html.MyValidationMessageFor(x => x.Street)

您可以轻松地对此进行调整,以检查元数据是否为空,如果是,则不返回任何内容。