在控制器类中代码" 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); });
答案 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。