我正在玩MVC 6,并且有一个用户网格,目前已注册到我的网站.在网格之上,我为搜索/过滤功能构建了一个View Component.它是通过调用
@Component.Invoke("UserSearchBar")
其中一个要求是能够保存并重新应用下拉列表的值,以便最终用户可以快速访问他/她经常使用的搜索.我在所有已保存搜索的View Component中添加了一个下拉列表.
一旦用户保存搜索,我想重新加载UserSearchBar视图组件以更新下拉列表.
我的问题是:
按下按钮后如何通过ajax重新加载视图组件?
在这种情况下,由于视图组件和重新加载的限制,我应该使用Partial而不是视图组件吗?
我可以在View Component中使用Partial来下拉.或者以编程方式向下拉列表添加元素,但是当我单击按钮应用其中一个已保存的搜索时,我仍然会遇到重新加载视图组件的相同问题.
解
在编写问题时仔细考虑了问题后,我提出了一种更好(更正确?)的方法,不涉及重新加载View Component.在保存时,对保存搜索方法进行ajax调用,并在下拉列表中添加元素.在保存的搜索应用中,调用一个方法,该方法将返回已保存的搜索并应用它.
但是,我仍然想知道是否有可能(以及如何)在MVC 6中重新加载View Component.
您需要做的就是在控制器中设置一个返回视图组件的路径.例如:
public class MyController : Controller { public IActionResult GetMyViewComponent() { return ViewComponent("MyViewComponent",); } }
然后,您可以通过AJAX向此控制器发出GET请求,并将旧视图组件替换为请求的结果.
至于你是否应该使用部分或视图组件,这取决于你,但我建议坚持使用视图组件,因为它允许你在组件本身内保留搜索栏的相关逻辑.