Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.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
C# ajaxcall后网格未更新_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# ajaxcall后网格未更新

C# ajaxcall后网格未更新,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我正在创建自己的过滤器。过滤器有一个dropdownlist,当这个dropdownlist改变时,jquery将对相应的HTTPPOST-controller操作进行ajaxcall。在这个操作中,我过滤列表并将其传递给我的视图 一旦列表到达我的视图,webgrid就不会更新。下面是一些代码和一些调试信息,以显示发生了什么 控制器 正常动作 public ActionResult Projects() { IEnumerable<Project>

我正在创建自己的过滤器。过滤器有一个dropdownlist,当这个dropdownlist改变时,jquery将对相应的HTTPPOST-controller操作进行ajaxcall。在这个操作中,我过滤列表并将其传递给我的视图

一旦列表到达我的视图,webgrid就不会更新。下面是一些代码和一些调试信息,以显示发生了什么

控制器 正常动作

    public ActionResult Projects() 
    {
        IEnumerable<Project> projects = Adapter.ProjectRepository.Get();
        int test = projects.Count();
        List<ProjectsDisplayViewmodel> projectsView = new List<ProjectsDisplayViewmodel>();
        string strCats = "";
        foreach (Project prj in projects)
        {
            strCats = "";
            Mapper.CreateMap<Project, ProjectsDisplayViewmodel>();
            ProjectsDisplayViewmodel newProject = Mapper.Map<Project, ProjectsDisplayViewmodel>(prj);
            foreach (Category cat in prj.Categories) 
            {
                strCats += cat.CategoryName + ", ";
            }
            newProject.strCategories = strCats;
            projectsView.Add(newProject);
        }

        ViewBag.Categories = new SelectList(Adapter.CategoryRepository.Get(), "CategoryID", "CategoryName");

       /*projectsview contains 4 projects now*/
        return View(projectsView);
    }

我只是注意到控制台中没有打印任何内容。日志。。。。不是成功,也不是错误函数。

在AJAX请求的
success
回调中(除了
console.log
调用之外),您似乎没有做任何事情。所以没有任何更新是完全正常的。如果希望发生这种情况,则需要手动更新DOM

因此,您应该修改
HttpPost
控制器操作,使其返回包含网格的PartialView。然后在成功回调中,将新收到的部分注入DOM:

success: function (response) { 
    $('#some_id_of_a_containing_div').html(response);
    console.log("succes"); 
},
在本例中,应将局部视图包装到包含div的文件中,该文件将在此处更新:

<div id="some_id_of_a_containing_div">
    @Html.Partial("Partial_Containing_Your_Grid")
</div>

@Html.Partial(“包含您的网格的部分”)

能否显示进行AJAX调用的代码?或者它是一个
Ajax.BeginForm
?@DarinDimitrov我想是WebGrid在处理它。你检查了Chrome/Firefox/IE控制台的错误了吗?如果帖子到达服务器,可能是空响应或任何java脚本错误@DarinDimitrov我在编辑中添加了ajaxcall。。。在我的控制台中没有错误…是的,我明白了。但是,除了将结果输出到控制台之外,在成功回调中不做任何事情。您需要让您的控制器操作返回一个包含更新网格的部分,您应该将其重新注入DOM.Hmmm,我不明白为什么需要在jquery中修改html。。。我怀疑我返回的列表视图会自动更改webgrid…哦,不,没有任何东西会自动更新。您正在向控制器操作发出AJAX请求,该操作将返回某些内容(在您的案例中是一个视图),但您应该在成功回调中对结果进行处理。否则,不要期望任何事情发生。现在你只是在制造一场火灾,忘记放弃结果的呼叫。从控制器操作返回视图并不意味着页面将自动更新。jQuery对视图一无所知。它甚至对ASP.NETMVC一无所知。好的,谢谢,我会试试看。现在就得走了,明天会发帖子吗,如果行的话,或者我的问题是什么。提前谢谢!在ajaxcall中,我收到一个错误,因此ajax执行error函数而不是success函数。。。有什么问题吗?我的控制器的返回值是:返回视图(projectsView);我的控制器没有错误你确定视图存在吗?在FireBug中查看服务器的确切响应。
$("#Categories").change(function () {
    var param = $(this).val();

    $.ajax({
        type: "POST",
        url: "/Project/Projects",
        data: { catID: $(this).val(), strSearch: 'test' },
        dataType: "json",
        success: function (response) { console.log("succes"); },
        error: function (xhr, ajaxOptions, thrownError) {console.log("error"); }
    });
});
success: function (response) { 
    $('#some_id_of_a_containing_div').html(response);
    console.log("succes"); 
},
<div id="some_id_of_a_containing_div">
    @Html.Partial("Partial_Containing_Your_Grid")
</div>