带有jQuery Ajax调用的RenderBody

时间:2018-09-06 13:46:40

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

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

我的布局是@RenderBody

问题是-我正在进行jQuery Ajax通话,我的 Actions 返回了 Partial Views 。很好

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

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

无法将它们添加到 Partial View 中,因为最后会加载jQuery

如果我将它们包括在 Layout 页面的末尾,那么当我导航到不同的局部视图时, Click 事件和其他工作就会起作用。

我认为这里的方法确实很糟糕,我所有的导航都是通过jQuery Ajax完成的,并从 Controllers 返回 Partial Views

1 个答案:

答案 0 :(得分:0)

似乎您是在尝试创建SPA(单页应用程序)而没有真正理解其中的内容。

现在,您在服务器端管理应用程序,即路由在服务器端,视图在服务器端等。因此,您需要在服务器之间来回移动才能获得“页面”,它否定了拥有客户端应用程序的全部要点。您需要做的是使用Angular,React,Vue等框架对所有客户端进行洗牌。

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

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