Ich versuche die Formularüberprüfung mit Font Awesome-Icons in Kombination mit dem Standard-MVC-Validierungsprozess zu implementieren. also in meiner Form genanntRender ValidationMessageFor mit Font Awesome Symbole
public static MvcHtmlString FontAwesomeValidationMessageFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
var propertyName = ExpressionHelper.GetExpressionText(expression);
var name = helper.AttributeEncode(helper.ViewData.TemplateInfo.GetFullHtmlFieldName(propertyName));
var builder = new TagBuilder("span");
var modelName = ExpressionHelper.GetExpressionText(expression);
builder.MergeAttribute("data-valmsg-for", modelName);
builder.MergeAttribute("data-valmsg-replace", bool.TrueString.ToLowerInvariant());
if (helper.ViewData.ModelState[name] == null ||
helper.ViewData.ModelState[name].Errors == null ||
helper.ViewData.ModelState[name].Errors.Count == 0)
{
return !helper.ViewContext.UnobtrusiveJavaScriptEnabled
? MvcHtmlString.Empty
: MvcHtmlString.Create(builder.ToString());
}
builder.AddCssClass("text-danger");
builder.InnerHtml = "<i class='fa fa-exclamation'></i>";
builder.MergeAttribute("title", helper.ViewData.ModelState[name].Errors[0].ErrorMessage);
return MvcHtmlString.Create(builder.ToString());
}
Dies wird: Ich habe einen benutzerdefinierten ValidationMessageFor Helfer dies zu erreichen geschrieben
@Html.FontAwesomeValidationMessageFor(m => m.Email)
und mache diese HTML standardmäßig:
<span data-valmsg-for="Email" data-valmsg-replace="true"></span>
Dies scheint darauf hinzu arbeiten gut und macht die passenden Spannen auf meiner Form. Sobald ich jedoch die clientseitige Validierung aktiviere, wird mein Helfer nicht mehr aufgerufen, stattdessen wird die Standardmodellüberprüfungsmeldung angezeigt. Wie kann ich die clientseitige Validierung erhalten, um meinen HTML-Helfer zu rendern? Gehe ich das richtig?