2014-10-30 116 views
3

如何使用onFailureOnSuccess方法。目前我添加onFailure js方法,但它没有执行。也许我忘了添加一些脚本。 (我只加了jquery.unobtrusive.ajax.js)。我不得不在模态窗口中返回onFailure partialview。Ajax.BeginForm及其方法onFailure和onSuccess

守则控制器

[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 2014-10-30 11:44:57

+0

显示onFailure回调的代码。和将触发它的控制器代码。 – 2014-10-30 11:52:37

+0

我已经看到这个帖子,我已经脚本的方法,必须执行onFailure。但它的返回值只有PartialView(全屏,而不是模态),并且不执行javascript方法。我在其他帖子中添加了脚本,但不起作用。 – 2014-10-30 11:54:51

回答

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" })) 

更新目标ID应该是任何股利或占位符中有您的形式

+0

谢谢,但它不是我的解决方案。当然,如果我在TextBoxFor中添加了手动需要的属性,它将不会传递空的输入(即使带出验证器),但我的模型中的属性在c#代码中,如果onFailure和onSuccess方法有效,那将会很好。但他们没有。 – 2014-10-30 13:18:45

+0

你有没有给出控制器名称?在ajax.beginform – tspga 2014-10-30 13:27:09

+0

起初,我不作为控制器名称是必需的,如果我从其他控制器调用动作,但后来我试过了,但它仍然不适用于我 – 2014-10-30 13:39:01

相关问题