我可以通过ajax重新加载asp 5/MVC 6视图组件吗?
我正在玩MVC6,有一个用户网格,当前已注册到我的站点。在网格之上,我为搜索/过滤功能构建了一个视图组件。它是通过我可以通过ajax重新加载asp 5/MVC 6视图组件吗?,ajax,asp.net-core,asp.net-core-viewcomponent,Ajax,Asp.net Core,Asp.net Core Viewcomponent,我正在玩MVC6,有一个用户网格,当前已注册到我的站点。在网格之上,我为搜索/过滤功能构建了一个视图组件。它是通过 @Component.Invoke("UserSearchBar") 其中一项要求是能够保存并重新应用下拉列表的值,以便最终用户能够快速访问他/她经常使用的搜索。我在所有保存的搜索的视图组件中添加了一个下拉列表 用户保存搜索后,我想重新加载UserSearchBar视图组件以更新下拉列表 我的问题是: 按下按钮后,如何通过ajax重新加载视图组件 在这个场景中,由于视图组件和重新
@Component.Invoke("UserSearchBar")
其中一项要求是能够保存并重新应用下拉列表的值,以便最终用户能够快速访问他/她经常使用的搜索。我在所有保存的搜索的视图组件中添加了一个下拉列表
用户保存搜索后,我想重新加载UserSearchBar视图组件以更新下拉列表
我的问题是:
解决方案 在写出来的时候仔细考虑了这个问题之后,我想出了一个更好(更正确?)的方法,不需要重新加载视图组件。在save时,对save搜索方法进行ajax调用,并在下拉列表中添加一个元素。在saved search apply上,调用一个方法,该方法将返回保存的搜索并应用它
但是,我仍然想知道是否有可能(以及如何)在MVC 6中重新加载视图组件。您需要做的就是在控制器中设置一个路由,返回视图组件。例如:
public class MyController : Controller {
public IActionResult GetMyViewComponent() {
return ViewComponent("MyViewComponent", <arguments...>);
}
}
公共类MyController:Controller{
公共IActionResult GetMyViewComponent(){
返回ViewComponent(“MyViewComponent”);
}
}
然后,您可以通过AJAX向该控制器发出GET请求,并用请求的结果替换旧的视图组件
至于您应该使用部分组件还是视图组件,这取决于您,但我建议您坚持使用视图组件,因为它允许您将搜索栏的相关逻辑保留在组件本身中。这正是我要寻找的。简单而且有效。谢谢。你能举个例子吗,我如何在视图中使用它?Ryan Helmoski非常有帮助。非常感谢。在我看来,我不知道该如何使用它。您可以共享Ajax部分吗?@Kulpemovitz您需要对视图组件的控制器URL发出Ajax GET请求。结果将是新视图组件的html,然后您可以使用它替换旧视图组件。您可以使用JQuery的.replaceWith()函数来实现这一点,也可以使用vanilla javascript,但我将把它留给您来使用。如果您发现仍然无法获得它,我建议您提出一个新的stackoverflow问题。如果您需要关于AJAX的教程,请查看W3S提供的此教程: