Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 使用MVC的搜索引擎:使用JSON和呈现客户端的利弊_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 4 使用MVC的搜索引擎:使用JSON和呈现客户端的利弊

Asp.net mvc 4 使用MVC的搜索引擎:使用JSON和呈现客户端的利弊,asp.net-mvc-4,Asp.net Mvc 4,我正在为我的项目实现一个搜索引擎,需要根据用户选择显示不同类型的搜索结果,如图像、视频和文本。 我正在考虑为每种搜索类型创建单独的视图模型,并将Json结果返回给视图。然后在客户端,解析结果并相应地显示结果 使用基于JSON的视图渲染系统的优缺点是什么?我认为您选择的方法非常好 当然,还有许多问题需要回答,例如,如果客户浏览器不支持JavaScript(即JavaScript被禁用),该怎么办?您是否会提供替代的呈现方法,或者假设所有客户都启用了JS(例如,对于Intranet应用程序,您可以做

我正在为我的项目实现一个搜索引擎,需要根据用户选择显示不同类型的搜索结果,如图像、视频和文本。 我正在考虑为每种搜索类型创建单独的视图模型,并将Json结果返回给视图。然后在客户端,解析结果并相应地显示结果


使用基于JSON的视图渲染系统的优缺点是什么?

我认为您选择的方法非常好

当然,还有许多问题需要回答,例如,如果客户浏览器不支持JavaScript(即JavaScript被禁用),该怎么办?您是否会提供替代的呈现方法,或者假设所有客户都启用了JS(例如,对于Intranet应用程序,您可以做出这样的假设)


如果你查看谷歌的搜索,他们的方法非常相似——搜索结果以JSON响应的形式出现,并在页面中构建表示。

使用完全烘焙的JSON解决方案是一个合理的选择,特别是考虑到你正在构建的搜索引擎本身可能不需要编制索引。使用纯javascript的解决方案将限制(其他)搜索引擎对站点进行充分索引的能力,如果这对您很重要,则是一种不太理想的方法。交付为JSON将一些处理卸载到客户机上,因此可以提高服务器的性能,因为它可以呈现更简单的JSON,而不是生成HTML

我将采取的方法是逐步加强。使用服务器端视图交付结果的第一页,然后通过AJAX交付后续页面——可以作为JSON结果交付并标记为客户端创建的结果,也可以作为HTML呈现的服务器端并插入DOM中的适当位置。如果在这个场景中选择JSON,您需要意识到您将在客户端和服务器中复制视图呈现代码


如果您选择使用完整的客户端方法,您可能希望使用一个框架。这将允许您使用客户端MVC方法。

我已经更新了您的问题,使其更适合本网站。一般来说,征求意见是不受欢迎的。我希望询问某一特定方法的优缺点能得到更好的容忍。谢谢你编辑这个问题。当你说-“使用服务器端视图交付第一页结果,然后通过AJAX交付后续页面-作为JSON结果交付并标记为客户端创建的结果,或者作为HTML呈现的服务器端并插入到DOM中的适当位置(如果在此场景中选择JSON),您需要意识到,您将在客户端和服务器中复制视图渲染代码。“如何在客户端和服务器中复制代码?@annantDev好吧,您的HTML将首先在视图中呈现,并使用迭代第一页结果所需的任何代码。然后,如果使用JSON,则需要使用javascript获取JSON并从模板构建HTML(或者使用页面上的现有结果作为模板)。如果你交付的是HTML而不是JSON,那么你可以重用服务器端的视图代码来构建它,你只需要在客户端插入它。我想选择两个答案都是正确的,因为它们都指导了我正确的方向。然而,网站不允许我选择2,所以我会选择第一个响应。谢谢你们两位@tom和tvanfosson