一個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