Как создать повторно используемое решение для asp.net mvc ValidationMessageFor

В настоящее время я получил следующий фрагмент:

@Html.EditorFor(model => model.Street, new { htmlAttributes = new { @class = "form-control tooltp", placeholder = "Rue *", autofocus = "autofocus", data_tooltip_content = "#Street_content" } })
@if (ViewData.ModelState["Street"] != null && ViewData.ModelState["Street"].Errors.Any())
{
    <div class="tooltip_templates">
        <div id="street_content">
            @Html.ValidationMessageFor(model => model.Street)
        </div>
    </div>
}

Как я могу сделать это многоразовым? Создать помощника MVC? Частичный вид? Это невозможно?

Я хотел бы иметь такое решение, чтобы я мог использовать его для всех моих различных областях. Я использую подсказку для сообщений всплывающей подсказки. Без оператора if подсказка будет содержать пустую строку (но все равно будет отображаться).

Я хотел бы иметь решение, где я могу, например, сделать это

@ErrorHelper.ShowError("Street")

1 ответ

Решение

У меня есть свой собственный помощник сообщения проверки для автоматического добавления стилей класса начальной загрузки

public static MvcHtmlString MyValidationMessageFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string tag)
{
    return htmlHelper.ValidationMessage(tag, new { @class = "text-danger" });
}
public static MvcHtmlString MyValidationMessageFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
    return htmlHelper.ValidationMessageFor(expression, "", new { @class = "text-danger" });
}

и используется как @Html.MyValidationMessageFor(x => x.Street)

Вы можете легко адаптировать это, чтобы проверить, были ли метаданные нулевыми или нет, и ничего не вернуть, если это так.

Другие вопросы по тегам