我想制作自定义@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());
}
答案 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);
您可以轻松更改此代码,只获取所需控件的错误消息。