使用部分视图还是在javascript中生成HTML?

使用部分视图还是在javascript中生成HTML?,javascript,asp.net-mvc,Javascript,Asp.net Mvc,我有一个关于asp.NETMVC的项目 在某些情况下,当用户做某事时,html页面的一部分应该被更新。不应重新加载整个页面。例如,用户单击产品类别,应加载包含新产品的html标记 最佳实践是什么?使用部分视图和Ajax.ActionLink更新部分视图产品,或者使用$.Ajax接收产品信息,然后用javascript生成html标记 或者最好的做法是其他的?这取决于您的需求。一般来说,正如您所说,有两种方法: 要么通过Ajax加载格式化的HTML,要么加载JSON,然后自己创建HTML。各有优缺

我有一个关于asp.NETMVC的项目

在某些情况下,当用户做某事时,html页面的一部分应该被更新。不应重新加载整个页面。例如,用户单击产品类别,应加载包含新产品的html标记

最佳实践是什么?使用部分视图和Ajax.ActionLink更新部分视图产品,或者使用$.Ajax接收产品信息,然后用javascript生成html标记


或者最好的做法是其他的?

这取决于您的需求。一般来说,正如您所说,有两种方法:

要么通过Ajax加载格式化的HTML,要么加载JSON,然后自己创建HTML。各有优缺点:

加载HTML

优点:

  • 您可以在服务器端执行生成,从而保持客户端代码干净
缺点

  • 通过电线发送的数据包的大小会更大
  • 请求仅针对该方法是非常特定的,并且很难重用
加载JSON

优点:

  • 有效载荷尽可能小
  • 因为您没有将它绑定到一个实现,所以可以将JSON用于其他目的(例如移动客户端)
缺点:

  • HTML的生成必须在客户端完成。如果您是手动或使用jQuery执行此操作,这可能会很麻烦,并且会增加客户端脚本。(一个解决方案是使用模板引擎,如moustache.js或handlebar.js)
  • 渲染逻辑在服务器和客户端上,这意味着并非所有内容都在一个位置
正如你所看到的,两者都有利弊。这里没有硬性规定,这取决于你的情况

一般来说,我的建议是,如果您想要快速的东西,并且您不认为在其他地方需要相同的方法,请使用动态HTML加载。如果您认为您可能希望重用其他页面或其他客户机上的数据,请使用JSON和模板引擎