这可能是设计使然,也可能是我正在做或没有做的事情。
我有一个 AccountController 正在使用 Authorize 属性的 MVC 4 应用程序。当用户在登录页面上时,一旦他们登录就会使用一个出纳员发布日期。我试图在名称字段上捕获更改事件,这工作正常,并触发一个 Jquery 函数来获取发行日期。
这是 JQuery Ajax 函数:
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);
}
这就是发生的情况,如果我在 web.config 中禁用了 Authorize 内容,则此功能按原样工作,应返回正确的发布日期。但是,如果我启用了 Authorize things,那么 GetIssueDate Action 似乎不会被触发。我得到了登录页面的 HTML。
我认为即使我在此操作上具有 [AllowAnonymous] 属性,应用程序在从 Jquery 函数调用时似乎忽略了这一点,并且不允许它触发。
有没有办法解决这个问题,或者可能有另一种方法来做我想做的事情?
谢谢。