Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc IsAjaxRequest总是返回false_Asp.net Mvc_Jquery - Fatal编程技术网

Asp.net mvc IsAjaxRequest总是返回false

Asp.net mvc IsAjaxRequest总是返回false,asp.net-mvc,jquery,Asp.net Mvc,Jquery,我对Ajax请求和重定向有问题。我尝试创建自定义授权属性,如下所示: [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] public class MyAuthorizeAttribute : AuthorizeAttribute public override void OnAuthorization(AuthorizationContext filterContext) { base.

我对Ajax请求和重定向有问题。我尝试创建自定义授权属性,如下所示:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class MyAuthorizeAttribute : AuthorizeAttribute

public override void OnAuthorization(AuthorizationContext filterContext)        
{
    base.OnAuthorization(filterContext);            
    if (filterContext.Result == null || (filterContext.Result.GetType() != typeof(HttpUnauthorizedResult) 
        || !filterContext.HttpContext.Request.IsAjaxRequest()))                
        return;                

    var redirectToUrl = "/login?returnUrl=" + filterContext.HttpContext.Request.UrlReferrer.PathAndQuery;   
    filterContext.Result = (filterContext.HttpContext.Request.ContentType == "application/json"  
        ? (ActionResult)                  
        new JsonResult                  
        { 
            Data = new { RedirectTo = redirectToUrl },                      
            ContentEncoding = System.Text.Encoding.UTF8,                      
            JsonRequestBehavior = JsonRequestBehavior.DenyGet                  
        }                
        : new ContentResult                
        {
            Content = redirectToUrl,                    
            ContentEncoding = System.Text.Encoding.UTF8,                    
            ContentType = "text/html"                
        });                 

    //Important: Cannot set 401 as asp.net intercepts and returns login page            
    //so instead set 530 User access denied                       
    filterContext.HttpContext.Response.StatusCode = 530; //User Access Denied            
    filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;                    
}    
} 
但是在我的应用程序中,isAjaxRequest()总是错误的。甚至当我从jquery.ajax()调用操作时

编辑:包括建议的ajax调用。 我的一些ajax调用是由jqGrid组件进行的。数据类型设置为JSON,类型为POST。控制器具有HTTPPost装饰。其中一些是直接的jquery ajax调用,如下所示:

$("#clientList").change(function () {
    var client = $("#clientList").val();
    $.ajax({
        url: "myurl",
        data: { 'client': client },
        cache: false,
        traditional: true,
        type: 'POST',
        success: function (data) {
            <do something here>
        }
    });
});
$(“#客户端列表”).change(函数(){
var client=$(“#clientList”).val();
$.ajax({
url:“我的url”,
数据:{'client':client},
cache:false,
传统的:是的,
键入:“POST”,
成功:功能(数据){
}
});
});

这里出现了很多类似的问题:这两个问题中有谁能给你答案吗?@faust,我已经看过几乎所有类似的问题,但都没有帮助。因此,我在谷歌搜索这个链接时得到了上面的代码。我在authorize属性中尝试了几种类似的方法,但仍然无法使其正常工作。使用MVC3,jquery1.6.4,对jquery进行正确的脚本调用。我正在使用jquery的.ajax()方法调用控制器操作。您是否尝试更改jquery
.ajax()
调用的选项,例如type(post vs get)?发布您的jquery可能会帮助某人找到答案。isAjaxRequest检查请求头中的
X-request-Wit
h()此帖子:告诉您如何检查jquery
ajax()发送的头。我将检查这些标题。