Подтвердить что ты не робот

Укажите сводку проверки на несколько форм

У меня есть две формы на странице:

@using (Html.BeginForm())
{
    @Html.ValidationSummary()
    @Html.Label("code", "Confirmation Code")
    @Html.TextBox("code")
    <input type="submit" value="Go" />
}
@using (Html.BeginForm("SendConfirmation", "Auth"))
{
    @Html.ValidationSummary()
    @Html.Label("email", "Email")
    @Html.TextBox("email")
    <input type="submit" value="Resend" />
}

Если SendConfirmation выдает ошибку, отображается 2 сводки проверки. Как получить сводку проверки, чтобы настроить ее?

4b9b3361

Ответ 1

Дайте кнопке submit уникальное имя на обеих ваших формах:

@using (Html.BeginForm())
{
    @Html.ValidationSummary()
    @Html.Label("code", "Confirmation Code")
    @Html.TextBox("code")
    <input type="submit" name="login-top" value="Go" />
}
@using (Html.BeginForm("SendConfirmation", "Auth"))
{
    @Html.ValidationSummary()
    @Html.Label("email", "Email")
    @Html.TextBox("email")
    <input type="submit" name="login-main" value="Resend" />
}

Затем вы можете проверить, была ли предоставлена ​​конкретная форма, проверив значение запроса для ключа, соответствующего кнопке отправки, а затем условно отобразите сводку проверки, т.е. в верхней форме вы добавите:

if (Request.Form.AllKeys.Contains("login-top"))
{
    @Html.ValidationSummary()
}

Ответ 2

решение состоит в том, чтобы нарисовать сводку проверки только при подтверждении вашей формы

для более подробной информации проверьте это сообщение в блоге

Ответ 3

Html.ValidationSummary() не обязательно находиться внутри вашего элемента form, и вам понадобится только один раз в большинстве случаев. Я бы переместил его за пределы ваших двух форм, что-то вроде чуть выше вашего основного содержимого тела, и это должно дать вам желаемый эффект. Я верю в свое последнее приложение, которое поместил его в файл Layout.

Ответ 4

Чтобы выполнить это, вам нужно отделить две формы, поместить их в частичное представление и вернуть частичное представление при отправке, если проверка не выполнена. Измените результат действия, чтобы вернуть частичный результат.

частичные представления могут отображаться на странице, используя следующее:

@Html.partial("_PartialView")

или, если вам нужно пройти модель

@Html.partial("_Partial", Model)

У вас не может быть двух сводок для проверки на той же странице любым другим способом.

Ответ 5

Явно определить действие и контроллер в форме, если у вас есть несколько форм в 1 представлении, например

@using (Html.BeginForm("SendCode", "Auth"))
{
    @Html.ValidationSummary()
    @Html.Label("code", "Confirmation Code")
    @Html.TextBox("code")
    <input type="submit" value="Go" />
}
@using (Html.BeginForm("SendConfirmation", "Auth"))
{
    @Html.ValidationSummary()
    @Html.Label("email", "Email")
    @Html.TextBox("email")
    <input type="submit" value="Resend" />
}

Полагая, что для обеих форм у вас разные действия.