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

标签 ajax asp.net-core asp.net-core-viewcomponent

我正在玩 MVC 6 并且有一个当前注册到我的站点的用户网格。在网格上方,我为搜索/过滤功能构建了一个 View 组件。它是通过调用

@Component.Invoke("UserSearchBar")

要求之一是能够保存和重新应用下拉列表的值,以便最终用户可以快速访问他/她经常使用的搜索。我在所有已保存搜索的 View 组件中添加了一个下拉列表。

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

我的问题是:
  • 按下按钮后如何通过ajax重新加载 View 组件?
  • 在这种情况下,由于 View 组件和重新加载的限制,我应该使用 Partial 而不是 View 组件吗?

  • 我可以在 View Component 中使用 Partial 作为下拉菜单。或者以编程方式向下拉列表中添加一个元素,但是当我单击一个按钮以应用其中一个已保存的搜索时,我仍然会遇到重新加载 View 组件的相同问题。

    解决方案

    在写出问题时仔细考虑了问题后,我想出了一个更好(更正确?)的方法,它不涉及重新加载 View 组件。在保存时,对保存搜索方法进行 ajax 调用并向下拉列表中添加一个元素。在应用保存的搜索时,调用一个方法来返回保存的搜索并应用它。

    但是,我仍然想知道是否可以(以及如何)在 MVC 6 中重新加载 View 组件。

    最佳答案

    您需要做的就是在返回 View 组件的 Controller 中设置一个路由。例如:

    public class MyController : Controller {
        public IActionResult GetMyViewComponent() {
            return ViewComponent("MyViewComponent", <arguments...>);
        }
    }
    

    然后,您可以通过 AJAX 向该 Controller 发出 GET 请求,并用请求的结果替换旧的 View 组件。

    至于您应该使用部分组件还是 View 组件,这取决于您,但我建议坚持使用 View 组件,因为它允许您将搜索栏的相关逻辑保留在组件本身中。

    关于ajax - 我可以通过 ajax 重新加载 asp 5/MVC 6 View 组件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34639376/

    相关文章:

    c# - 在 View 组件ASP.NET Core 1.0中使用表单

    javascript - 在 ASP.Net Core MVC View 中刷新 ViewComponent

    javascript - 为什么我的保存时间功能不起作用? PHP + AJAX JS

    html - 条件 css 样式未应用于在 ie7 上通过 ajax 加载的内容

    java - 我应该如何使用 servlet 和 Ajax?

    ajax - 如何在 Django View 中解析嵌套的 json ajax 对象?

    asp.net-core - Asp.Net Core中间件路径字符串startswithsegments问题

    javascript - 如何将 C# 字典传递给 typescript map

    c# - asp.net core 操作中参数的映射命名约定

    c# - 如何从 View 组件返回 JSON?