【发布时间】:2011-05-06 03:08:51
【问题描述】:
我有一个asp.net mvc 视图,它在jquery ajax 的帮助下更新了一个div。我应该使用返回 PartialView 或 json 的控制器吗?表演呢?
【问题讨论】:
标签: javascript jquery asp.net-mvc ajax json
我有一个asp.net mvc 视图,它在jquery ajax 的帮助下更新了一个div。我应该使用返回 PartialView 或 json 的控制器吗?表演呢?
【问题讨论】:
标签: javascript jquery asp.net-mvc ajax json
如果您希望用户能够在不同视图之间切换,并且这些数据可以简单地包含在页面加载中,那么只需包含 onload 然后隐藏/显示或加载为 json,然后根据需要填充。
如果这是一个非常简单的请求,需要根据需要进行更新,并且您不打算在应用中满足其他类似需求,那么只需返回 html。
但是,如果您正在发出提交数据或执行某些操作的请求,我喜欢返回带有错误布尔值、错误消息和内容/数据元素的一致 json 响应。
【讨论】:
对我来说,最酷的 AJAX 方式是返回纤细的数据包,而不是预渲染的 HTML。所以我会说使用 JSON 选项...
...但这一切都取决于您的需求。显示预渲染的 HTML sn-ps 要容易得多,所以如果您需要快速的东西,部分视图可能是更好的选择。
但是这一切之前都已经讨论过了。所以看看这个链接:The AJAX response: XML, HTML, or JSON?。作者对 3 个主要的 AJAX 响应选项进行了很好的、独立于平台的总结,并说明了每个选项的优缺点。
【讨论】:
如果您正在压缩响应,则返回 HTML,否则返回 JSON 并构建 HTML 客户端。在理想情况下,您的服务器应该始终压缩响应,但您可能有一个配置不佳且不受您控制的服务器。然而,我的答案的重点是保持简单,因为在服务器端构建 HTML 和 JSON 之间的差异非常小。此外,对于使用过时机器的用户来说,在客户端上构建 HTML 可能会有点慢。 (或者浏览器...你知道我说的是浏览器...)
注意:我的回答应该在最一般的情况下被理解。如果不查看您的技术堆栈和目标市场,我以任何其他方式回答都是错误的。请记住,编程中的大多数规则更像是指南。
【讨论】:
返回 HTML 很可能需要更多的服务器端处理,因为服务器必须进行 HTML 格式化。返回 JSON 将需要更多的客户端处理,因为客户端必须格式化 HTML。因此,性能是您希望在哪里进行处理的问题。如果您的服务器处于高负载状态,您可能希望将一些处理任务卸载到客户端。
【讨论】:
这取决于您要达到的目标。如果您正在创建一个“厚”客户端(即服务器只处理数据而浏览器处理其余的),那么服务器应该使用 JSON 进行响应。
这听起来像你的情况,页面已经加载。考虑到这一点,JSON 是一种方法,然后让你的 JS 处理 UI 的处理。使用这两种方法都没有重大的性能权衡,但 IMO 的最佳做法是使用 JSON。
【讨论】:
我自己倾向于 JSON。原因是 JSON 为您提供了带回不同数据的灵活性。例如
您可能会带回 100 个结果,以及一些关于这些结果是什么的元数据(关键字、分组等)以及关于还有多少结果可用、结果的新鲜程度、分页信息...
同样,其他不相关的信息可能会返回 - 状态消息,“新邮件!”指标等
如果返回纯 HTML,除了更新容器的 HTML 内容之外,您还可以限制其他选项来执行任何操作。
【讨论】: