フィールドの検証メッセージの一部としてリンクを表示しようとしています。私はデータを使用してい は、それを設定するには、カスタムエラーメッセージを持つ属性:MVC3のHTML.ValidationMessageForの内部にHTMLタグをレンダリングする
[Required(ErrorMessage = "Message <a href='#'>link</a>")]
public string Field{ get; set; }
をしかし、それはレンダリング時にタグが脱出し、文字通り印刷されています。
Message <a href='#'>link</a>
ことが可能です一部としてリンクを持っています検証メッセージは正しく表示されますか?
誰もが興味を持っていた場合は、ここで私は正しい方向に私を指しているため
public static MvcHtmlString ValidationHTMLMessageFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
return ValidationHTMLMessageFor(helper, expression, (object)null);
}
public static MvcHtmlString ValidationHTMLMessageFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes)
{
return ValidationHTMLMessageFor(helper, expression, new RouteValueDictionary(htmlAttributes));
}
public static MvcHtmlString ValidationHTMLMessageFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, IDictionary<string, object> htmlAttributes)
{
string propertyName = ExpressionHelper.GetExpressionText(expression);
string name = helper.AttributeEncode(helper.ViewData.TemplateInfo.GetFullHtmlFieldName(propertyName));
if (helper.ViewData.ModelState[name] == null ||
helper.ViewData.ModelState[name].Errors == null ||
helper.ViewData.ModelState[name].Errors.Count == 0)
{
return MvcHtmlString.Empty;
}
string errors = "";
foreach (ModelError error in helper.ViewData.ModelState[name].Errors)
{
TagBuilder tag = new TagBuilder("span");
tag.Attributes.Add("class", HtmlHelper.ValidationMessageCssClassName);
tag.MergeAttributes(htmlAttributes);
tag.Attributes.Add("data-valmsg-for", name);
tag.Attributes.Add("data-valmsg-replace", "true");
var text = tag.ToString(TagRenderMode.StartTag);
text += error.ErrorMessage;
text += tag.ToString(TagRenderMode.EndTag);
errors += text;
}
return MvcHtmlString.Create(errors);
}
おかげダーリンそれを達成する方法です。私はテンプレートとして使用したこともわかりましたCustomize Html.ValidationMessageFor doesn't work in client side。
私はこれを初めて使っています。だから誰でも提案があれば投稿してください。 ありがとう!
あなたの –