Ajax.IsAjaxRequest()总是返回false?

时间:2015-05-15 14:39:33

标签: jquery ajax asp.net-mvc

在控制器类中代码" if(Request.IsAjaxRequest())"总是返回假...有人可以帮我弄清楚吗?但是如果我在cshtml页面中使用ajax.beginform并且不使用jquery文件那么它返回true。

这是我的cshtml文件

<form method="get" action="@Url.Action("Index")" data-otf-ajax="true" data-otf-target="#ListOfdata">
<input type="search" name="SearchTerm"/>
<input type="submit" value="Search"/>

这是我的控制器逻辑:

 public ActionResult Index( string SearchTerm)
    {
        var departments = db.Departments.Include(d => d.Administrator);
        if(Request.IsAjaxRequest())
        { 
            if (SearchTerm != null)
            {
                 var departments2 = db.Departments.Where(x => x.Name.Contains(SearchTerm));
                 return PartialView("_Department", departments2.ToList());              
            }
        }
        return View(departments.ToList());
    }

这是我处理ajax请求的jquery文件

$(function () {
var ajaxFormSubmit = function () {
    var form = $(this);
    var options = {
        url: $form.attr("action"),
        type: $form.attr("method"),
        data: $form.serialize()

    };
    $.ajax(options).done(function (data) {
        var $target = $($form.attr("data-otf-target"));
        $target.replaceWith(data);
    });
    return false;
};

$("form[data-otf-ajax='true']").submit(ajaxFormSubmit); });

3 个答案:

答案 0 :(得分:0)

使用jquery.unobtrusive-ajax.min.js这很可能解决问题

答案 1 :(得分:0)

确保请求中有一个Ajax标头:

X-Requested-With: XMLHttpRequest 

默认情况下它应该在那里但是好的措施:

header: { 'X-Requested-With': 'XMLHttpRequest' }

如果设置了此标头,Request.IsAjaxRequest()将起作用。

答案 2 :(得分:0)

可能的原因是错误的jquery版本。尝试使用更新版本的jquery。