我在 ASP.NET MVC5 应用程序上有一个搜索页面。角落有一个下拉菜单,如果您选择“用户搜索”,则会出现用户搜索过滤器。如果您选择“任务搜索”,则会显示任务的搜索过滤器。
这些过滤器被加载到部分视图中,并被封装在一个Ajax.BeginForm
. So when an option is chosen, it loads an entirely new form.
@using (Ajax.BeginForm("SearchUsers", "Search", "Search_default",
new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "searchResults",
OnBegin = "StartSpinner",
OnComplete = "EndSpinner"
}))
{
//Form
}
searchResults
div 在页面上,因此表单正在使用另一个局部视图形式的数据更新主页上 div 中的内容。
无论我设置为默认的哪个搜索选项,在这个示例中的用户,都可以正常工作。当搜索结果返回并按预期替换 div 内容时。
如果我然后切换到Task Search
哪个会用一个类似但指向不同操作的表单替换上述表单,则为搜索结果返回的部分视图会出现在不同的页面上。
我在想这是因为我正在动态加载表单,它不再识别searchResults
div 但这可能会有所不同。这也可能是由 unobtrusive.ajax.js 引起的,如果它没有加载,但是在我更改搜索表单之前结果工作正常。