我正在玩MVC6,有一个用户网格,当前已注册到我的站点。在网格之上,我为搜索/过滤功能构建了一个视图组件。它是通过
@Component.Invoke(“用户搜索栏”)
其中一项要求是能够保存并重新应用下拉列表的值,以便最终用户能够快速访问他/她经常使用的搜索。我在所有保存的搜索的视图组件中添加了一个下拉列表
用户保存搜索后,我想重新加载UserSearchBar视图组件以更新下拉列表
我的问题是:
- 按下按钮后,如何通过ajax重新加载视图组件
- 在这个场景中,由于视图组件和重新加载的限制,我应该使用部分组件而不是视图组件吗
我可以在视图组件内部使用一个部分作为下拉列表。或者以编程方式将元素添加到下拉列表中,但当我单击按钮应用其中一个保存的搜索时,仍然会遇到重新加载视图组件的问题
解决方案
在写出来的时候仔细考虑了这个问题之后,我想出了一个更好(更正确?)的方法,不需要重新加载视图组件。在save时,对save搜索方法进行ajax调用,并在下拉列表中添加一个元素。在saved search apply上,调用一个方法,该方法将返回保存的搜索并应用它
然而,我仍然想知道是否有可能(以及如何)在MVC6中重新加载视图组件
您所需要做的就是在控制器中设置一个路由,以返回视图组件。例如:
公共类MyController:控制器{
公共IActionResult GetMyViewComponent(){
返回ViewComponent(“MyViewComponent”,参数…>;);
}
}
然后,您可以通过AJAX向该控制器发出GET请求,并用请求的结果替换旧的视图组件
至于您应该使用部分组件还是视图组件,这取决于您,但我建议您还是使用视图组件,因为它允许您将搜索栏的相关逻辑保留在组件本身中