#c# #javascript #jquery #asp.net-mvc
#c# #javascript #jquery — jquery — запрос #asp.net-mvc #jquery
Вопрос:
В моей форме есть несколько текстовых полей. Работает ненавязчивая проверка jquery, которая делает поля красными, когда вводятся недопустимые значения. Однако, когда я нажимаю, чтобы отправить форму, форма отправляется обратно на сервер. почему?
Это потому, что текстовые поля не соответствуют модели, объявленной в верхней части представления?
Как я могу предотвратить публикацию формы?
@model Dictionary<Project, List<ProjectActualCapacity>>
@{
var model = Model.ToList();
}
@using (Html.BeginForm("ProjectActualCapacityIndex", "Project", FormMethod.Post))
{
<hr />
@Html.ValidationSummary(true)
@for (int i = 0; i < model.Count(); i )
{
<tr>
<td>
@Html.DisplayFor(r => model[i].Key.Name)
</td>
@for (int j = 0; j < 12; j )
{
{
<td>
@Html.TextBoxFor(r => model[i].Value[j].Hours, new { @class = "form-control input-sm text-right" })
@Html.HiddenFor(r => model[i].Value[j].ID)
</td>
}
@Html.HiddenFor(r => model[i].Key.ID)
}
</tr>
}
<input type="submit" value="Set Values" class="btn btn-default" />
}
Комментарии:
1. достаточно просто включить текстовые поля внутри формы.
2. Был бы полезен некоторый пример кода
Ответ №1:
Убедитесь, что в вашем web.config включены CliventValidationEnabled и UnobstrusiveJavaScriptEnabled, см. Ниже.
<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
Ответ №2:
<form action="..." onsubmit="return validateForm()" method="...">
...
<input type="submit" value="Submit">
</form>
Вы можете попробовать приведенный выше код для своей формы. Метод validateForm должен возвращать значение true для отправки формы, и если он возвращает значение false, форма не будет отправлена.
Ответ №3:
Добавление
onclientclick="return false;"
на кнопку следует прекратить публикацию (всегда, вам нужно добавить сюда свою логику, чтобы сделать необязательной) с помощью
usesubmitbehaviour="false"
опция. Также enablevalidation=»false» должно нарушить это.