开发简单的ASP.NET网站的最佳实践(使用内置控件或JQuery +脚本)

5
我最近审查了两个不同承包商编写的代码,都是基本的ASP.NET管理站点。这些站点允许用户查看和编辑数据,基本上是简单的CRUD网关。
一组人尽力使用内置的ASP + AJAX Toolkit控件,并尽可能多地使用内置控件。它基本上符合我所见过的大部分asp开发方式。我发现这种代码更易于阅读和维护。
另一组使用jQuery,代码中大量标记着脚本块,然后使用JavaScript文件构建页面。
示例脚本块:
  <script id="HRPanel" type="text/html">
   <table cellpadding='0' cellspacing='0' class="atable"><thead class="mHeader"><tr><th>Name</th><th>Description</th><th>Other</th></thead><tbody>
  <# for(var i=0; i < hrRows.length; i++) {         
      var r = HRRows[i]; #>
        <tr><td><#=r.Name#></td><td><#=r.Description#></td><td class="taRight"><#=r.Other#></td></tr>
  <#}#>
   </tbody><tfoot><th></th><th></th><th></th></tfoot></table>
    </script>

然后在另一个地方(js文件)你会看到类似这样的内容。
 $("#HRPanel").html($("#HRPanel").parseTemplate({ HRRows: response.something.bah.bah }));

在js文件中,您将只看到一堆切换和操作html代码的内容。aspx文件中没有代码,只包含html标记块。
哪种方式更常见?基本上利用由javascript文件控制的脚本中嵌入的HTML标记的方式会导致可读性和维护问题?
其次,第二种方式会出现什么问题?人们真的在实际生产环境中使用这样的代码吗?是否有工具可以帮助使用Visual Studio进行jQuery开发,或者这是Microsoft未来要更加简化的做法?
5个回答

5
我的回答是两者混合使用。根据情况使用每个。
这可能是我见过的最丑陋的JQuery使用之一。在这种情况下,标准重复器看起来是一个不错的选择。它非常适合以可重复方式向页面添加元素。
使用JQGrid插件可以很好地处理这种情况,它允许您使用JSON数据或XML更新表格的内容。它比您发布的代码简单得多。我的建议是您花时间原型化这两种方法。然后查看两者的复杂性和可扩展性。例如,向表格中添加列有多容易?添加分页有多容易?
Microsoft已将JQuery作为其MVC模板中的默认脚本包含在内。为什么?因为JQuery正在成为业界变革的认可。它极大地减少了识别和操作DOM元素所需的代码,并且几乎完全消除了浏览器特定的JavaScript和浏览器版本测试的需要。
JQuery非常适合在客户端为页面添加行为,例如菜单。对于诸如客户端验证之类的事情,它也非常有用(在发送到页面的JavaScript方面比标准验证控件轻得多)。
JQuery在您拥有良好定义的CSS时运作得非常好。当您了解选择器的强大之处时,您可以使用非常简洁的代码编写一些非常强大的JQuery行为。这里有一些很好的例子,请看:

http://attardi.org/labels/#info

http://net.tutsplus.com/articles/web-roundups/the-20-most-practical-and-creative-uses-of-jquery/

工作后我会再添加一些。 :)


它看起来像是他们基本上将所有的代码模板化到脚本块中,然后根据来自Web服务的响应,在JS调用中切换它们。几乎所有这些都可以使用内置控件完成。 - Nix

4

回答你的问题,一个在Visual Studio中方便开发jQuery的工具是jquery智能感知


3

<假设最坏的情况> 使用Javascript模板构建网站的重要部分而没有备用方案,肯定会造成无障碍问题。(根据网站部署的位置,这可能不是问题)。

这也会带来维护问题,因为任何开始工作的新开发人员都必须学习语法、怪癖和与所使用的Javascript模板系统相关的问题,以便在网站上工作(我假设他们正在访问Web服务来创建、更新和删除数据)。 </假设最坏的情况>

我担心我的工作经验还不够广泛,无法确定这是否是在ASP.NET中使用jQuery开发的常见方法。但我希望不是。

编辑:正如Daniel指出的那样,ASP.NET内置了更好的方法可以使用,因此除非这是为了解决非常特殊的业务需求而进行的,否则他们很可能正在遭受一种BWIKTBI(我知道构建它的最佳方式)情况,您最好假设最坏的情况。


它看起来相当丑陋,我只能希望未来微软能够使其更加清洁地与jQuery集成。它几乎看起来是“智能”控件的倒退,这些控件可以为您处理js标记。你所说的“可访问性问题”是什么意思? - Nix
1
@Nix - 当用于解决问题的技术对具有不太理想(或其他选择)能力的客户(人或技术)造成障碍时,就会出现可访问性问题。在这种情况下,问题在于他们正在使用JavaScript构建页面;如果某人禁用了JavaScript(例如因为他们正在使用屏幕阅读器或因为他们处于受限制的环境中),则用户将无法与页面交互。 - Sean Vieira

1

正如你所说,ASP + AJAX Toolkit生成的代码易于理解和维护。然而,它限制了您使用内置控件的能力,在某些情况下可能不太有效。

jQuery和Web服务广泛用于生产网站。特别是对于ASP.NET MVC网站,这是推荐的方法。我个人不喜欢脚本块的想法。但这并不是使用jQuery的唯一方式。您可以拥有一个常规的ASP.NET网页,并使用jQuery小部件来实现丰富的控件。对于AJAX功能,您需要启用AJAX的WCF服务。这比使用Update Panels要更有效。


0

大多数ASP.NET控件生成的HTML代码非常糟糕,使用表格随意地滥用,这真是可耻。如果您想要制作残障友好的网站或(在我看来)有效使用CSS,则这种生成不良的HTML会引起无障碍性问题。我也遇到过生成的HTML导致像从Web导入数据到Excel之类的问题。您可以使用类似于CSS Friendly适配器(http://www.asp.net/cssadapters/)或编写自己的适配器来缓解这个特定问题(但大多数人不这样做)。ListView是.NET 3.5中的一个不错的补充,它使开发人员对呈现的HTML有更好的控制。

我同意其他人的观点,使用脚本块不是最理想的。我的首选是使用不显眼的脚本,然后只将HTML元素作为占位符(除了导入js文件之外没有脚本标记)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接