gpt4 book ai didi

asp.net-mvc-3 - 使用 MVC 3 和 jQueryUI 创建 ajax 登录对话框

转载 作者:行者123 更新时间:2023-12-01 06:05:21 25 4
gpt4 key购买 nike

我正在使用 Asp.Net MVC 3(带有 Razor)和 jQuery/jQueryUI 创建一个对话框登录框。我对这些技术还很陌生,并且遇到了问题。

登录表单处于分部 View 中,我使用以下 jQuery 代码将其加载到页面中:

 $('#log-in').click(function () {
if (ServerModel.UserId == 0) {//User not logged in, open login dialog
$("<div></div>")
.addClass("dialog")
.addClass("form-dialog")
.attr("id", "login-dialog")
.appendTo("body")
.dialog({
title: 'LOGIN',
close: function () { $(this).remove() },
modal: true,
width: 323,
resizable: false
})
.load(ActionUrls.LogOn);
}
});

ActionUrls.LogOn,具有 Controller 中登录操作方法的路径。

带有登录表单的部分 View 看起来如下:

    @using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "login-dialog" }))
{
//Login form fileds in here with submit button at the end
}

这是 Controller 的代码:

[HttpGet]
public ActionResult LogOn()
{
return PartialView("_Logon");
}

[HttpPost]
public ActionResult LogOn(LogOnModel model)
{
if (ModelState.IsValid)
{
CustomSqlMembershipProvider provider = new CustomSqlMembershipProvider();

if (provider.ValidateUser(model.UserName, Security.ComputeHash(model.Password)))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}

// something failed, redisplay partial view with the model
return PartialView("_Logon", model);
}

这一切都工作正常,但是我遇到的问题是,当用户经过身份验证时,如 Controller 代码中所示。我尝试 RedirectToAction("Index", "Home"),其目的是在用户登录并关闭对话框的情况下重新加载页面。

但是目前,只有登录对话框会重新加载整个页面内容。我知道这可能是正常行为,因为我告诉登录 View 中的表单更新对话框的 UpdateTargetId。

所以问题是,我能否达到我想要的整个页面重新加载的结果?如果可以,如何实现?

任何帮助和提示将不胜感激。

/奥拉

最佳答案

您可以使用 jquery ajax 而不是使用表单参数。方法并在 ajax 方法的成功函数中发送用户名和密码(如果用户已成功通过身份验证)redirect用户访问您的索引页。

请注意,索引页面仍应有办法确定用户是否已通过身份验证,否则任何人都可以输入 URL。

你觉得怎么样?

关于asp.net-mvc-3 - 使用 MVC 3 和 jQueryUI 创建 ajax 登录对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7036598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com