ASP.NET MVC - 使用部分视图或 JSON/Knockout 进行更新



我正在尝试找到一条线(或模式),何时通过部分视图更新页面,何时"仅"使用JSON和JS库(如Knockout)。

例如,

我有一个排序的项目列表和这个列表上的几个不同的视图(透视)(例如,一个带有缩略图,一个带有铃铛,一个带有口哨),用户可以在这些视图之间切换。

一种选择是每个视图都由分部视图呈现 - 因此当用户选择视图(透视)时,相应的分部视图通过 ajax(控制器 ->分部视图)下载。

相反的选项是最初将列表作为 JSON 获取并使用例如 Knockout 渲染视图 - 但我觉得这与 MVC 背道而驰 - 控制器上的操作不会生成视图(或部分视图),但在这种情况下它会生成一个 JSON 列表。在许多情况下,很清楚何时使用部分视图,何时仅使用JSON-我的规则通常是视图(HTML标记)是视图,并且通过JSON,我只修改HTML标记。

现在我不确定应该在哪里画线 - 更广泛地使用 JSON/Knockout 会导致更负责任的 Web 应用程序和更少的流量(客户端只下载一次数据,实际视图在客户端呈现/更新),但我不确定它是否"正确"。

那么,何时通过部分视图更新页面以及何时使用 JSON/JS?

编辑:

换句话说 - 在MVC + Razor场景中 ASP.NET 使用客户端模板除了将服务器工作负载卸载到浏览器之外,是否有任何好处?

这很可能被标记为一个固执己见的问题,但无论如何我都会给出我的想法。这两种技术都有效,但我同意纯 MVVM 不会使用部分视图。

我确实喜欢部分视图,因为 Razor、智能感知及其利用数据验证的内置功能。以 MVVM 方式处理验证对我来说似乎要麻烦得多。

这取决于您正在计划的应用程序类型:

如果你正在构建一个需要被搜索引擎抓取的网站,你应该建立一个非Javascript版本,并使用jquery进行Hijax。

像KO这样的MVVM库用于单页应用程序。搜索引擎无法抓取它们(至少不是开箱即用的)。它们也更难使用跟踪解决方案进行跟踪。

最新更新