Проверять только загруженный ajax частичный вид

У меня есть форма с некоторыми элементами управления. На форме есть кнопка, которая загружает частичное представление. В частичном представлении есть два обязательных текстовых поля и кнопка. И когда его щелкнули, мне нужно отображать сообщения об ошибках только для текстовых полей, которые находятся внутри частичного представления, но не для полей в реальной форме. И когда я нажимаю кнопку отправки формы, все сообщения об ошибках должны отображаться.

После частичной загрузки я заново инициализирую плагин валидации, как показано ниже.

$('#test').removeData("validator");
$.validator.unobtrusive.parse('#test');

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

Группы проверки ASP.NET MVC?

Тем не менее, я могу проверить индивидуально, вызывая textbox1.valid() и textbox2.valid(). Но я думаю, что мне не хватает стандартного способа сделать это. Любая помощь приветствуется.

1 ответ

Решение

Вы можете сделать это, отправив частичное представление с помощью Ajax.BeginForm ()

//In Partail View
@model SomeModel

@using (Ajax.BeginForm ("SomeActionName", новые AjaxOptions { HttpMethod = "POST", UpdateTargetId = "targetId"}))) {

           @Html.EditorFor(mode=>model.FirstText)
           @Html.EditorFor(mode=>model.SecText)
           <input type="submit" value="save">
 }

//In Controller

public ActionResult SomeAction(SomeModel model)
{
    return PartaiulView(model);
}

здесь вы можете проверить частичное представление. ПРИМЕЧАНИЕ: когда вы отправляете форму, используя Ajax.BeginForm, вы должны указать " UpdateTargetId ", где ваш результат будет отображаться в представлении.

//In View

<div id="targetId">
   @Html.Partail("PartialView")
</div>

ИЛИ если вы хотите Перенаправить на другое действие, если ваша модель действительна, то измените свое действие

public ActionResult SomeAction(SomeModel model)
    {
        if(ModelState.IsValid)
        {
            return Json(new {redirect = @Url.Action("SomeAction","SomeController")})
        }
        return PartaiulView(model);
    }

затем в режиме просмотра паролей вы можете вызвать метод OnSuccess Ajax.BeginForm

     @using (Ajax.BeginForm("SomeActionName", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "targetId",OnSuccess="success"}))
         {

         }

<script type="text/javascript">

  function success(data)
  {
        if(data.redirect)
        {
            windows.location = data;
        }
  }
</script>

проверьте оба способа, какой вам подходит.

Другие вопросы по тегам