一个Ajax登陆对话框,我使用Asp.Net MVC 3(剃刀)和jQuery/jQueryUI的创建对话框登录框。 我对这些技术还很陌生,并且遇到了问题。创建具有MVC 3和jQueryUI的
登录表单是一个局部视图,我使用下面的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,具有用于在所述控制器的登录操作方法的路径。
登录表单局部视图看起来沿着这些线路:
@using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "login-dialog" }))
{
//Login form fileds in here with submit button at the end
}
下面是控制器代码:
[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);
}
这一切工作正常,但我有问题,当用户通过身份验证时,可以在控制器代码中看到。我尝试使用RedirectToAction(“Index”,“Home”),这意味着页面应该在登录用户和对话框关闭的情况下重新加载。
此刻然而,仅仅在登录对话框重新加载在它整个页面的内容。我知道这可能是正常行为,因为我在登录视图中告诉窗体更新对话框的UpdateTargetId。
所以,问题是,我可以达到我想要的整个页面重载的结果,如果是这样,如何?
任何帮助和提示,将是非常赞赏。
/奥拉
使用表单的好处是,在Asp.Net MVC中,它自己传回各种验证信息。如果你愿意接受你的建议,你必须自己去做这件事吗? –
什么样的验证? – Baz1nga
FYI有很多jquery库供您验证为您验证..就像http://docs.jquery.com/Plugins/validation或更多详细信息:http://zoomzum.com/useful-jquery-form-validation/ – Baz1nga