Укажите сводку проверки на несколько форм
У меня есть две формы на странице:
@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 сводки проверки. Как получить сводку проверки, чтобы настроить ее?
Ответы
Ответ 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" />
}
Полагая, что для обеих форм у вас разные действия.