Я не могу понять, как заставить проверку работать в модальном окне MVC Ajax

#c# #ajax #asp.net-mvc-3 #validation

#c# #ajax #asp.net-mvc-3 #проверка

Вопрос:

Я использую JQM для создания модальных блоков AJAX.

У меня есть обычная страница, и на этой странице у меня есть ссылка, которая запускает окно модели Ajax.

Модальный Ajax запускается нормально, и у него просто есть текстовое поле и кнопка.

Модель, стоящая за ним, имеет Required это текстовое поле, но я не могу понять, как реализовать проверку в нем.

В настоящее время, если в поле есть текст, все работает нормально, и поле скрывается. Если в поле нет текста, я в настоящее время только return null из контроллера, и поле по-прежнему остается скрытым.

Последняя страница Ajax с формой имеет следующий код:

 @using (Ajax.BeginForm(new AjaxOptions    {
    UpdateTargetId = "TheBigList",
    InsertionMode = InsertionMode.Replace,
    OnSuccess = "HideModal",
    HttpMethod = "post",
    OnFailure = "AjaxError",

}))
{
    @Html.TextBox("text")

    <input type="submit" value="OK" />

}<br />
<br />
  

Я надеюсь, что это прямолинейно, и я с радостью предоставлю другой код, но поскольку это не работает, я не уверен, насколько это актуально! HideModal все именно так, как написано, и я знаю, что OnFailure имеет дело с подключением, а не с проверкой (я думал о возврате кода ошибки, чтобы обмануть!), Но я перепробовал много комбинаций, которые я прочитал на этом сайте, без особой удачи.

Самое близкое, что я думал, было путем реализации $.validator.unobtrusive.parse("#form0"); , однако я не могу понять, где / как это добавить.

Это сводило меня с ума на прошлой неделе! Пожалуйста, помогите!!!!

Ответ №1:

1) Проверка на стороне клиента через AJAX довольно проста. Ваш режим настроен правильно с требуемым набором атрибутов.

2) Следующее, что вам нужно сделать, это включить следующие сценарии в представление :-

 <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
  

и

 <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
  

3) Настройте проверку для элемента управления таким образом :-

 @Html.EditorFor(model=>model.TextBox)
@Html.ValidationMessageFor(model => model.Textbox)
  

Примечание: — Возможно, вам потребуется изменить свойства, переданные в EditorFor и ValidationMessageFor

Надеюсь, это поможет!!

Комментарии:

1. На этой странице есть эти два файла, загруженные страницей, которая загружает модель (этот пример кода был для всплывающего окна), я подумал, что этого будет достаточно… Я просто собираюсь попробовать добавить их сейчас снова в модальный ajax…

2. Я только что попробовал, но у меня не получается заставить это работать : (Я почти уверен, что эта проблема связана с тем фактом, что форма загружается динамически / Ajax, поскольку я смог заставить ненавязчивую проверку нормально работать для элементов, не загруженных Ajax.

3. не могли бы вы, пожалуйста, предоставить код для метода action. Также укажите, для какой модели он строго типизирован

4. Он строго типизирован для простой модели, которая имеет только одно свойство «text», которое является строкой и имеет required. Я не думаю, что контроллер имеет значение, поскольку, похоже, он работает нормально, и я пытаюсь заставить проверку работать до того, как что-либо попадет на контроллер.

5. попробуйте добавить это после инструкции using @Html.ValidationSummary(true)