我的控制器里面有以下代码
public ActionResult Index(string searchTerm=null)
{ System.Threading.Thread.Sleep(5000);
var accountdefinition = repository.FindAccountDefinition(searchTerm).ToList();
if (Request.IsAjaxRequest())
{ return PartialView("_CustomerTable",accountdefinition); }
return View(accountdefinition);
}
但是如果我使用Ajax.beginform调用上面的操作方法,那么Request.IsAjaxRequest将返回false并且不会返回局部视图
@using (Ajax.BeginForm(
new AjaxOptions{
HttpMethod= "get",
InsertionMode=InsertionMode.Replace,
LoadingElementId = "progress",
UpdateTargetId="customerTable"}))
{
<div style="float:right">Search <input placeholder="Search by name.." name="searchTerm" type="text"> <input class="btn btn-success" type="submit" value="search" /></div>
}
<div id = "progress" class="loadingimage">
<img src="~/Content/Ajax-loader-bar.gif" />
</div>
答案 0 :(得分:21)
在我看来,我没有包含 jquery.unobtrusive-ajax.min.js
答案 1 :(得分:3)
我遇到了这个问题并且不确定jquery.unobtrusive-ajax.min.js
文件正在做什么黑魔法但是不为我工作。当我遇到这个post时,我很高兴解释了这个非常简单的问题。
帖子的作者宣称有一个标题需要填充。
X-Requested-With => 'XMLHttpRequest'
对于发现此帖子的 Angular 用户,我添加了post上方的代码段。
var productsApp = angular.module('productsApp', []);
productsApp.config(['$httpProvider', function ($httpProvider) {
$httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
}]);
答案 2 :(得分:1)
嗨试试这个并改变你的观点,希望它对你有用
@using (Ajax.BeginForm("Index", "controller", null, new AjaxOptions { HttpMethod = "post", InsertionMode = InsertionMode.Replace, LoadingElementId = "progress", UpdateTargetId = "customerTable" }))
{
<div style="float: right">
Search
<input placeholder="Search by name.." name="searchTerm" type="text">
<input class="btn btn-success" type="submit" value="search" /></div>
}