我正在研究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的新手
答案 0 :(得分:1)
确保您已将unobtrusive-ajax.js脚本包含在您的网页
中([int]([datetime]::ParseExact('%ADate%','%DFormat%',[System.Globalization.CultureInfo]::CurrentCulture)).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");
}