ASP.NET MVC3自定义验证消息显示

时间:2011-08-30 12:14:02

标签: asp.net asp.net-mvc-3 validation

ASP.NET MVC3中是否有一种方法可以自定义Html.ValidationMessageFor(...)方法的结果?例如,在错误文本旁边添加图像或类似的... 但我希望能够更改图像,无论验证是否成功......

2 个答案:

答案 0 :(得分:11)

您可以看到错误包含在Css类中,您需要做的就是根据自己的意愿使用该Css类。

默认MVC3包含在styles.css

/* Styles for validation helpers
-----------------------------------------------------------*/
.field-validation-error
{
    color: #ff0000;
}

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

.input-validation-error
{
    border: 1px solid #ff0000;
    background-color: #ffeeee;
}

.validation-summary-errors
{
    font-weight: bold;
    color: #ff0000;
}

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

只需在那里添加图片。

答案 1 :(得分:7)

烨 你可以写你自己的扩展来做到这一点

public static MvcHtmlString ValidationMessageFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
    {
        TagBuilder div = new TagBuilder("div");
        div.AddCssClass("aside");

        string modelName = ExpressionHelper.GetExpressionText(expression);
        ModelState state = htmlHelper.ViewData.ModelState[modelName];
        if (state != null)
            if ((state.Errors != null) && (state.Errors.Count > 0))
                div.AddCssClass("invalid");
            else 
                div.AddCssClass("valid");

        div.InnerHtml = htmlHelper.ValidationMessageFor(expression).ToString();
        return MvcHtmlString.Create(div.ToString());
    }

然后使用类似的东西

@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name) 

最后,你需要为无效和旁边的类定义ur css来自定义错误的外观。