我得到了一些复杂的东西,但我不明白为什么它不起作用:我的 Index.cshtml 中有一个 JSTree。当一个节点被选中时,我进行 Ajax 调用
public async Task<ActionResult> GetEBooksItems(string id)
返回部分视图。这非常有效。
现在,除了树形搜索之外,我还有一个表单可以添加一些条件来缩小搜索范围。我使用 Ajax.BeginForm 将数据发布回控制器。
public async Task<ActionResult> GetEBooksCustom(GenericSearchViewModel filter)
{
vm = filter;
//Session["GenreNodeId"] = id;
Session["SearchCondition"] = (string.IsNullOrEmpty(vm.Condition) != true) ? vm.Condition : "All";
Session["MaximumPrice"] = (string.IsNullOrEmpty(vm.MaxPrice) != true) ? vm.MaxPrice : "999999";
Session["MinimumPrice"] = (string.IsNullOrEmpty(vm.MinPrice) != true) ? vm.MinPrice : "0";
Session["SearchIndex"] = (string.IsNullOrEmpty(vm.SearchIndex) != true) ? vm.SearchIndex : "KindleStore";
Session["SortOrder"] = (string.IsNullOrEmpty(vm.SortOrder) != true) ? vm.SortOrder : "price";
Session["KeyWords"] = (string.IsNullOrEmpty(vm.Keywords) != true) ? vm.Keywords : "";
Session["Title"] = (string.IsNullOrEmpty(vm.Title) != true) ? vm.Title : "";
Session["Author"] = (string.IsNullOrEmpty(vm.Author) != true) ? vm.Author : "";
return RedirectToAction("GetEBooksItems", new { id = vm.CategoryNodeId });
}
到这个方法,然后用 RedirectToAction 调用第一个方法。
我一直在尝试我能想到的一切,我总是得到整个页面的结果,而不是像第一种方法那样的部分视图。
看起来对 GetEBooksCustom 的调用没有被“视为”为 Ajax 调用。我想念什么?谢谢你的帮助,伯纳德。
** * * 6 小时后编辑* ** * ** * ** *
在这之间我做了建议,即从“GetEBooksItems”中提取功能,以便能够直接返回 PartialView 而不是使用 RedirectToAction。在调试器中,看起来一切都很完美,我看到来自服务器的 200 响应,但我仍然得到一个完整的页面显示,并且 url 显示控制器方法,而这不应该是 ajax 调用的情况。
问题是,我在其他地方有基本相同的表格,它可以按预期工作。看不出有什么不同???
一如既往,感谢您的帮助和建议。伯纳德