我有一个签到表,
@if (@User.Identity.IsAuthenticated)
{
<div>Welcome @User.Identity.Name</div>
}
else
{
<input type="text" id="username" name="username" placeholder="" class="input-xlarge">
<input type="password" id="password" name="password" placeholder="" class="input-xlarge">
<button id="loginBtn" class="btn btn-success">Login</button>
}
一些jQuery,
$("#loginBtn").click(function () {
Authenticate();
});
function Authenticate() {
$.post("/Home/Authenticate", { username: "John", password: "test" }, function (data) {
$('#loginArea').replaceWith(data);
});
}
还有一些服务器端代码来处理请求。
[HttpPost]
public ActionResult Authenticate(string username, string password)
{
var ticket = new FormsAuthenticationTicket(
1,
username,
DateTime.Now,
DateTime.Now.AddDays(5),
true,
string.Empty,
FormsAuthentication.FormsCookiePath);
var encTicket = FormsAuthentication.Encrypt(ticket);
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
return PartialView("_login");
}
奇怪的是,这有效,但不是在最初的电话中。即使用户通过身份验证,返回的视图也不会更新。如果我刷新页面,一切都会按预期进行。问题是,这是一个单页应用程序,我真的不想强制刷新页面..
返回的 PartialView 没有呈现“欢迎”文本是否有原因?