0

我想定制@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());
    }
4

3 回答 3

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;

资料来源:如何从代码中检索数据注释?(以编程方式)

于 2012-10-25T01:30:27.640 回答
0

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

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

您可以毫不费力地更改此代码,以仅获取所需控件的错误消息。

于 2012-10-25T03:11:10.790 回答
0

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

这让我继续前进,并且我已经根据本教程编写了许多验证器。

祝你好运。

于 2012-10-25T01:39:33.530 回答