自定义@ Html.ValidationMessageFor

时间:2012-10-25 01:16:30

标签: c# data-annotations custom-attributes

我想制作自定义@Html.ValidationMessageFor

我有这段代码,但它使用@Html.ValidationMessageFor,现在将HTML格式化,只希望返回错误。

怎么做?

我的代码:

public static MvcHtmlString MyValidationMessageFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
    {
        return MvcHtmlString.Create(helper.ValidationMessageFor(expression).ToString());
    }

3 个答案:

答案 0 :(得分:2)

您可以从DataAnnotations中做很多事情。你在验证什么?例如,如果是必需的,则可以

[Required(ErrorMessage= "Please enter something, anything, PLEASE!!!! Come on, I've been nice, just do it! DON'T LEAVE ME EMPTY FOR THE LOVE OF GOD")]
public string MyValue

编辑更具戏剧性的效果。

糟糕!我读错了,你只想要留言,你可以试试这个:

public static T GetAttributeFrom<T>(this object instance, string propertyName) where T : Attribute
{
    var attrType = typeof(T);
    var property = instance.GetType().GetProperty(propertyName);
    return (T)property .GetCustomAttributes(attrType, false).First();
}


var RequiredMessage = player.GetAttributeFrom<RequiredAttribute>("MyValue").ErrorMessage;

来源:How to retrieve Data Annotations from code? (programmatically)

答案 1 :(得分:0)

我找到了一个很好的资源来揭开编写自定义验证器的神秘面纱。这里的信息太多了,请点击此链接:http://tdryan.blogspot.com/2010/12/aspnet-mvc-3-custom-validation.html

这让我开始了,而且我已根据本教程编写了许多验证器。

祝你好运。

答案 2 :(得分:0)

我使用以下代码来获取所有错误消息:

StringBuilder sb = new StringBuilder();
foreach (ModelState state in ModelState.Values)
    foreach (ModelError error in state.Errors)
        sb.AppendFormat("<div>{0}</div>", error.ErrorMessage);

您可以轻松更改此代码,只获取所需控件的错误消息。