2014-10-30 2 views
3

Как работать с onFailure и OnSuccess методами. В настоящее время я добавляю метод onFailure js, но его выполнение не выполняется. Возможно, я забыл добавить некоторые скрипты. (Я добавил только jquery.unobtrusive.ajax.js).Ajax.BeginForm и его методы onFailure and onSuccess

Я должен вернуть onFailure частичный вид в модальном окне.

код в контроллере

[HttpPost] 
     public ActionResult RequestPassword(RequestForPasswordViewModel passwordRequestViewModel) 
     { 
      if (!ModelState.IsValid) 
      { 
       Response.StatusCode = (int)HttpStatusCode.BadRequest; 
       return PartialView("RequestForPassword", passwordRequestViewModel); 
      } 

Код в частичном

@model YouCapital.Web.Models.ViewModels.RequestForPasswordViewModel 

<div> 

    @using (Ajax.BeginForm("RequestPassword", FormMethod.Post, new AjaxOptions() 
    { 
     InsertionMode = InsertionMode.Replace, 
     HttpMethod = "POST", 
     UpdateTargetId = "forgotPassword", 
     OnFailure = "JsonRequestForPassword_OnFailure", 
     OnSuccess = "JsonRequestForPassword_OnSuccess" 

    }, new { @class = "form-inline" })) 
    { 



     <fieldset> 
      <legend>Recover password</legend> 
      <div class="form-group"> 
       @Html.Label("Enter your email") 
       @Html.TextBoxFor(x => x.Email) 
      </div> 

      <input type="submit" class="btn btn-default" value="Recover"/> 

     </fieldset> 


     @Html.ValidationSummary() 
    } 




</div> 


@section scripts 
{ 
    <script> 
     function JsonRequestForPassword_OnFailure() { 
      console.log('fail'); 

     } 
     function JsonRequestForPassword_OnSuccess() { 
      console.log('success'); 
     } 
    </script> 
} 

Кстати, я не знаю, если его проблема, но она находится в начальной загрузки modal и как tabpanel

+0

Возможно дубликатом вопрос HTTP://stackoverflow.com/questions/5517813/how-to-use-ajax-beginform-onsuccess-and-onfailure-methods – Oleh

+0

Показать код для обратного вызова onFailure. И код контроллера, который вызовет его. –

+0

Я видел это сообщение, и у меня уже есть скриптовый метод, который должен быть выполнен onFailure. Но его возвращает только PartialView (в полноэкранном режиме, а не модально) и не выполняет javascript-методы. Я добавил скрипты, как я видел в других сообщениях, но не работает. –

ответ

1

попробуйте эти мелочи, добавьте эти скрипты `

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

и document.ready

$(document).ready(function() { 
    $.validator.unobtrusive.parse('#form'); 
}); 

и формы

@using (Ajax.BeginForm("Controller Method", "Controller Name", new AjaxOptions { HttpMethod = "POST",  OnSuccess = "JsonRequestForPassword_OnSuccess", UpdateTargetId = "forgotPassword" }, new { @id = "form" })) 

целевой идентификатор обновления должен быть любой DIV или место держатель, который имеет свою форму

+0

спасибо, но это не решение для меня. Конечно, если я добавлю вручную требуемый атрибут в TextBoxFor, он не будет пропускать пустой ввод (даже без вашего валидатора), но у меня есть атрибуты в моей модели в коде C#, и было бы здорово, если бы работали методы onFailure и onSuccess. Но они этого не делают. –

+0

вы дали имя контроллера? в ajax.beginform – tspga

+0

Сначала я не использую имя контроллера, если я вызываю действие с другого контроллера, но потом я попробовал его и все же он не работает для меня –

Смежные вопросы