Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以通过ajax重新加载asp 5/MVC 6视图组件吗?_Ajax_Asp.net Core_Asp.net Core Viewcomponent - Fatal编程技术网

我可以通过ajax重新加载asp 5/MVC 6视图组件吗?

我可以通过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重新加载视图组件 在这个场景中,由于视图组件和重新

我正在玩MVC6,有一个用户网格,当前已注册到我的站点。在网格之上,我为搜索/过滤功能构建了一个视图组件。它是通过

@Component.Invoke("UserSearchBar")
其中一项要求是能够保存并重新应用下拉列表的值,以便最终用户能够快速访问他/她经常使用的搜索。我在所有保存的搜索的视图组件中添加了一个下拉列表

用户保存搜索后,我想重新加载UserSearchBar视图组件以更新下拉列表

我的问题是:

  • 按下按钮后,如何通过ajax重新加载视图组件
  • 在这个场景中,由于视图组件和重新加载的限制,我应该使用部分组件而不是视图组件吗
  • 我可以在视图组件内部使用一个部分作为下拉列表。或者以编程方式将元素添加到下拉列表中,但当我单击按钮应用其中一个保存的搜索时,仍然会遇到重新加载视图组件的问题


    解决方案

    在写出来的时候仔细考虑了这个问题之后,我想出了一个更好(更正确?)的方法,不需要重新加载视图组件。在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提供的此教程: