Я использую Asp.Net MVC 3 (с Razor) и jQuery / 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, содержит путь для метода действия 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 диалогового окна.
Итак, вопрос в том, могу ли я достичь желаемого результата перезагрузки всей страницы, и если да, то как?
Любая помощь и советы будут наиболее ценными.
* * Тысяча двадцать-один / Ола * * тысяча двадцать-два