我正在玩 MVC 6 并且有一个当前注册到我的站点的用户网格。在网格上方,我为搜索/过滤功能构建了一个 View 组件。它是通过调用
@Component.Invoke("UserSearchBar")
要求之一是能够保存和重新应用下拉列表的值,以便最终用户可以快速访问他/她经常使用的搜索。我在所有已保存搜索的 View 组件中添加了一个下拉列表。
用户保存搜索后,我想重新加载 UserSearchBar 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/