在.net mvc webapplication中没有调用data-ajax-success函数

时间:2017-11-01 05:46:33

标签: jquery ajax asp.net-mvc

我正在研究MVC .Net Web应用程序。我的_Layout页面有一个模态弹出窗口,可以呈现局部视图。 此部分视图_LoginPartial包含以下表单

@model WebsiteMVC.Web.ViewModels.LoginViewModel
<script>
    function LogInComplete() {
        var temp = $("#IsLoggedIn").val();
        if (temp == 'true') {
            document.location = "ThankYou";
        }
    };
</script>
<div id="myLoginForm">
    <h2>Login</h2>


    @using (Ajax.BeginForm("Login", "Account", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "myLoginForm",InsertionMode = InsertionMode.Replace, OnSuccess = "LogInComplete" }))
    {
        //Form body
    }
</div>

我在Controller中的登录方法是

public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
    var loginSuccess = await PerformLoginActions(model);
    if (loginSuccess)
    {
        model.IsLoggedIn = true;
    }
    return PartialView("_LoginPartial", model);


}

即使在获得200个POST请求响应后,也不会调用OnSuccess。 我尝试添加OnFailure但是没有调用这两种方法。 我是MVC .Net的新手

2 个答案:

答案 0 :(得分:1)

确保您已将unobtrusive-ajax.js脚本包含在您的网页

([int]([datetime]::ParseExact('%ADate%','%DFormat%',[System‌​.Globalization.Cultu‌​reInfo]::CurrentCult‌​ure)).AddMonths(-1))​.ToString('MM'))"

Ajax.BeginForm需要unobtrusive-ajax.js才能成功运行。

答案 1 :(得分:1)

尝试使用以下代码:

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>

<script>
   function LogInComplete() {
    var temp = $("#IsLoggedIn").val();
    if (temp == 'true') {
        document.location = "ThankYou";
    }
};
</script>

@using (Ajax.BeginForm("TestAjax", new AjaxOptions { UpdateTargetId = "TestResult" ,OnSuccess = "LogInComplete"}))  
{
        ........
    <input type="submit" />
}

[HttpPost]
public PartialViewResult TestAjax()
{
      return PartialView("_TestAjax");
}