13

我的控制器中有以下代码

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>
4

3 回答 3

21

在我看来,我没有包括jquery.unobtrusive-ajax.min.js

于 2013-07-05T13:59:36.103 回答
4

我遇到了这个问题,不确定jquery.unobtrusive-ajax.min.js文件在做什么黑魔法,但它对我不起作用。当我看到这篇解释了这个非常简单的问题的帖子时,我很高兴。

该帖子的作者声明有一个需要填充的标题。

X-Requested-With => 'XMLHttpRequest'

对于找到这篇文章的Angular用户,我在上面的文章中包含了一个片段。

var productsApp = angular.module('productsApp', []);

productsApp.config(['$httpProvider', function ($httpProvider) {
  $httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
}]);
于 2016-04-21T18:28:49.053 回答
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>               

        }
于 2013-07-05T12:43:47.710 回答