這可能是設計或它可能是我或我沒有做的事情。MVC 4 jquery Ajax調用返回登錄頁面html
我有一個MVC 4應用程序,AccountController正在使用Authorize屬性。當用戶在登錄頁面上時,有一個Teller發佈日期在他們登錄後使用。我試圖捕獲名稱字段上的更改事件,該字段工作正常,並且觸發Jquery函數以獲取發行日期。
這裏是JQuery的阿賈克斯功能:
function update_issue_date() {
var userName = $('#UserName').val();
$.ajax({
type: 'GET',
url: '/Account/GetIssueDate',
async: true,
data:
{
userName: userName
},
success: function(data) {
$('#IssueDate').val(__format_date_for(new Date(data.issueDate)));
}
});
在的AccountController我有如下因素作用:
[AllowAnonymous]
public ActionResult GetIssueDate(string userName)
{
var issueDate = DateTime.Now.Date;
if (userName.Length > 0)
{
var user = userRepo.GetUser(userName);
//var user = user_repository.get_all().FirstOrDefault(x => x.user_name == userName);
var currentDate = DateTime.Now.Date;
issueDate = (user == null || user.IssueDate < currentDate) ? currentDate : user.IssueDate;
}
return Json(new { issueDate = issueDate.ToShortDateString() }, JsonRequestBehavior.AllowGet);
}
這是會發生什麼,如果我有在網絡禁用授權的東西。 config,那麼這個函數按原樣返回正確的發佈日期。但是,如果我已啓用Authorize事件,那麼GetIssueDate Action似乎不會被解僱。我得到了登錄頁面的HTML。
我覺得即使我在這個Action上有[AllowAnonymous]屬性,應用程序在從Jquery函數中調用時似乎忽略了這一點,並且不允許它觸發。
有沒有辦法解決這個問題,或者是另一種方法來做我想做的事情?
謝謝。
歡迎StackOverflow上。如果答案解決了您的問題,[您可以接受此答案](http://meta.stackexchange.com/a/5235/170863)。然後,您也可以用灰色向上箭頭向上投票一個或多個答案。 – 2012-07-26 23:18:07
您應該不必* AllowAnonymous *才能使Ajax調用正常工作。如果會話已建立,會話cookie將與請求一起發送(您*使用會話cookie?)。 – 2012-07-26 23:26:15
我知道我使用cookie做的唯一事情是在登錄時使用FormsAuthentication.SetAuthCookie,但用戶在這一點上並未真正登錄。你必須原諒我,在這個Web編程方面還是一個新鮮事。 – 2012-07-26 23:28:35