首页 > 解决方案 > 带有 jQ​​uery Ajax 调用的 RenderBody

问题描述

我认为我在.Net Core中做错了什么。

我有布局@RenderBody

问题是 - 我正在jQuery Ajax打电话,我的Actions返回给我Partial Views。效果很好。

问题是,我在URL中没有看到ControllerAction的任何路径,无法刷新页面,我回到了Home

我无法解决的部分视图的另一个问题是 -脚本:我可以在Layout中包含所有脚本,但是一些部分视图需要 2-3 个脚本,另一个部分视图需要 2-3个脚本。我不能拆分使用,我不想把所有东西都放在一个布局中。

无法将它们添加到部分视图中,因为jQuery最后会加载。

如果我将它们包含在布局页面的末尾 - 然后当我导航到不同的局部视图时,单击事件和其他东西会起作用。

我认为我在这里的方法非常糟糕,我所有的导航都是由Controllers完成jQuery Ajax并返回Partial Views

标签: c#asp.net-mvcasp.net-core

解决方案


您似乎正在尝试创建一个 SPA(单页应用程序),但实际上并没有真正了解其中的内容。

现在,您正在管理您的应用程序服务器端,即您的路由是服务器端的,您的视图是服务器端的,等等。因此,您需要在服务器之间来回切换以获取您的“页面” ,这否定了拥有客户端应用程序的全部意义。您需要做的是使用 Angular、React、Vue 等框架对所有客户端进行洗牌。

这些框架将为您提供类似模板、双向数据绑定、客户端路由(包括使用 History API 之类的东西来创建虚拟 URL 允许您来回浏览、重新加载等,而不会丢失您的客户端 -侧面状态)。那时,您的后端 ASP.NET Core 应用程序变得更像一个 API,只需处理与您的客户端应用程序之间的数据传输,以及您的数据库等。

您可能还对 Blazor 感兴趣,尤其是服务器端 Blazor。它还处于开发的早期阶段,因此开始在其上构建任务关键型应用程序可能不是一个好主意,但它确实提供了更加流畅的服务器端到客户端体验。从本质上讲,它创建了响应式 HTML 文档,这些文档在后台使用 SignalR 以透明地与服务器通信以获取/更新状态并保持服务器端和客户端部分同步。它非常漂亮,但就像我说的那样,在这一点上仍然非常“预览”。


推荐阅读