Jquery 剃刀比阿贾克斯更锋利吗?

Jquery 剃刀比阿贾克斯更锋利吗?,jquery,html,asp.net,ajax,razor,Jquery,Html,Asp.net,Ajax,Razor,我知道jQuery目前是每个人的宠儿(说实话,我也很喜欢它),但我想知道,使用Razor/C#动态生成html是否更优雅、更容易。例如,要更新页面,请考虑此RaSor伪代码: @{ var divContent = functions.getDivContent("Platypus"); if(IsPost) { divContent = functions.getDivContent(request[mammalName]); } else {

我知道jQuery目前是每个人的宠儿(说实话,我也很喜欢它),但我想知道,使用Razor/C#动态生成html是否更优雅、更容易。例如,要更新页面,请考虑此RaSor伪代码:

@{
   var divContent = functions.getDivContent("Platypus");

   if(IsPost)
   {
      divContent = functions.getDivContent(request[mammalName]);
   }
   else
   {
      ;//anything?
   }
}
<body>
<form method="POST" action="" >
  <input type="Select" name="mammalName" ... />
</form>
  <div>@divContent</div>
</body>
$('mammalName').selectionChanged() {
    $('form').submit();
});
//函数(未显示)中的getDivContent()函数返回动态生成的html

HTML伪代码:

@{
   var divContent = functions.getDivContent("Platypus");

   if(IsPost)
   {
      divContent = functions.getDivContent(request[mammalName]);
   }
   else
   {
      ;//anything?
   }
}
<body>
<form method="POST" action="" >
  <input type="Select" name="mammalName" ... />
</form>
  <div>@divContent</div>
</body>
$('mammalName').selectionChanged() {
    $('form').submit();
});
在jQuery函数中执行所有这些操作,例如使用json数据和调用.getJson(),将无需进行完整的页面刷新,但在这两种情况下都必须查询服务器的数据,因此我不知道这是否真的是一个优势,尤其是在我的情况下其中被刷新的页面部分是页面的最大份额


我的想法/设计有缺陷吗?在这里有一个令人信服的理由来选择jQuery吗?

< P>是的,在选择使用Ajax更改页面或使用整个页面重新加载页面时,必须考虑一些事情。 在性能方面,使用ajax总是最重要的,因为您只需要请求一次整个页面,然后使用ajax请求部分页面

至于维护,您实际上不需要更改服务器端的任何内容来使用ajax而不是Razor。唯一增加的维护是对客户端代码进行编码,以正确处理页面不会重新加载的事实

如果使用Ajax,可以优化Ajax请求,使页面只返回所需内容而不是整个页面,从而进一步提高性能。这对维护来说成本很小,因为它增加了另一层复杂性,但是,如果操作得当,很容易维护

就用户体验而言,ajax通常会更好,因为不必重新加载页面。除非您还将后退按钮功能编码到客户端(也不是很困难),否则后退按钮功能将丢失


如果将SEO添加到等式中,事情会变得更加困难,除非您首先将站点编码为在没有ajax的情况下工作,然后在其上添加ajax功能,这样爬虫程序仍然可以在没有ajax的情况下访问整个站点。

优点是不必重新请求所有页面资产。对于您发出的每个http请求,所有元数据(cookies和http头)也会被发送。通常,使用ajax而不是整个页面重新加载的站点对最终用户的响应会更好。jQuery在客户端上运行。Razor在服务器上运行。苹果和桔子。@Jon:是的,但是使用jQuery调用.getJson()仍然需要访问服务器,对吗?如果我理解你的问题,问题不是是否使用jQuery/AJAX,而是是否从AJAX调用返回JSON或HTML。如果这就是您要问的,那么使用jQuery/AJAX从MVC请求一个部分,并让Razor构建HTML并将其作为HTML返回,那么AJAX结果处理程序将简单地将该HTML转储到它所属的位置,这一点都没有错。所以这两种技术可以一起使用。@ClayShannon:当然,但是你不能“比较”依赖于客户端代码的应用和不依赖客户端代码的应用。结构上的差异将是巨大的。你能解释一下最后一段吗?Ajax是如何影响SEO的?网络爬虫通常不使用javascript(但是,有些爬虫具有最低限度的javascript功能),因此,使用javascript交付的任何内容都可能无法供搜索引擎使用,除非您提供另一种访问所述内容的方式。