поддерживает ли валидация mvc.net концепцию ValidationGroup - PullRequest
4 голосов
/ 21 сентября 2010

Исходя из фона asp.net, я действительно оценил концепцию 'validationGroup' при добавлении валидации на страницу.Я искал соответствующую концепцию в mvc.net, и мне не повезло.

Доступна ли эта концепция в mvc.net?Если нет, какие у меня есть альтернативы?

Ответы [ 3 ]

6 голосов
/ 21 сентября 2010

К сожалению, нет, ничего подобного не происходит.

Я недавно опубликовал блог об обходном пути.

ASP.NET MVC - Сводка проверки с 2Формы и 1 просмотр

Список сообщений в блоге:

namespace System.Web.Mvc
{
    public static class HtmlExtensions
    {
        public static string ActionValidationSummary(this HtmlHelper html, string action)
        {
            string currentAction = html.ViewContext.RouteData.Values["action"].ToString();

            if (currentAction.ToLower() == action.ToLower())
                return html.ValidationSummary();

            return string.Empty;
        }
    }
}

И

<h2>Register</h2>

<%= Html.ActionValidationSummary("Register") %>

<form method="post" id="register-form" action="<%= Html.AttributeEncode(Url.Action("Register")) %>">

    ... blah ...

</form>


<h2>User Login</h2>

<%= Html.ActionValidationSummary("LogIn") %>

<form method="post" id="login-form" action="<%= Html.AttributeEncode(Url.Action("LogIn")) %>">

    ... blah ...

</form>

HTH,
Charles

2 голосов
/ 27 февраля 2014

Расширение ответа Чарлино, включая HtmlAttributes и другие свойства ValidationSummary:

        public static MvcHtmlString ActionValidationSummary(this HtmlHelper html, string action, bool excludePropertyErrors, string message, object htmlAttributes = null)
    {
        var currentAction = html.ViewContext.RouteData.Values["action"].ToString();

        if (currentAction.ToLower() == action.ToLower())
        {
            return html.ValidationSummary(excludePropertyErrors, message, htmlAttributes);
        }

        return new MvcHtmlString(string.Empty);
    }
1 голос
/ 14 июня 2013

Метод Чарльза был единственным подходом, который я смог найти, который действительно работал для моих целей!(Т.е. две формы на одной странице MVC -> без выполнения форм внутри партиалов и загрузки ajax для партиалов. Это было не очень хорошо для меня, так как я хотел возвращать различные наборы результатов, которые будут отображаться вне формы div, в зависимости от того, какая форма былаотправлено)

Я бы посоветовал внести небольшие изменения в расширение Html, потому что вы все еще хотите, чтобы сводка проверки отображалась для несоответствующей сводки проверки, чтобы проверка на стороне клиента работала:

namespace System.Web.Mvc
{
    public static class HtmlExtensions
    {
        public static MvcHtmlString ActionValidationSummary(this HtmlHelper html, string action)
        {
            string currentAction = html.ViewContext.RouteData.Values["action"].ToString();

            if (currentAction.ToLower() == action.ToLower())
                return html.ValidationSummary();

            return new MvcHtmlString("<div class=\"validation-summary-valid\" data-valmsg-summary=\"true\"><ul><li style=\"display:none\"></li></ul></div>");
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...