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

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

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

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

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

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

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


person Sunny    schedule 27.09.2012    source источник
comment
sundeep хотите проверить только частичные элементы управления представлением?   -  person Shivkumar    schedule 27.09.2012
comment
Может кто подскажет другие варианты..   -  person Sunny    schedule 27.09.2012


Ответы (1)


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

//In Partail View
@model SomeModel

@using (Ajax.BeginForm("SomeActionName", new 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>

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

person Shivkumar    schedule 27.09.2012