代码之家  ›  专栏  ›  技术社区  ›  Nix

开发简单ASP.NET站点的最佳实践(内置控件或jquery+脚本)

  •  5
  • Nix  · 技术社区  · 15 年前

    我最近审查了两个不同的承包商编写的一些代码,它们都是基本的ASP.NET管理站点。这些网站允许用户查看和编辑数据。相当简单的污物通道。

    其中一组尽其所能地使用内置的ASP+AJAX工具包控件,并尽其所能地使用尽可能多的内置控件。它与我所看到的大多数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代码。除了包含HTML标记的块之外,ASPX文件中没有代码。

    哪一个更常见?基本上利用了由javascript文件控制的脚本中的嵌入式HTML标记的人会尖叫可读性和维护问题?

    第二,第二种方式会产生什么类型的问题?人们真的在实际的生产环境中使用这样的代码吗?是否有工具可以帮助使用Visual Studio促进jQuery开发,和/或这是微软将来将使其更为精简的做法?

    5 回复  |  直到 15 年前
        1
  •  5
  •   Daniel Dyson    15 年前

    我的答案是两者兼而有之。在适当的地方使用每一个。

    这一定是我见过的jquery最丑的用法之一。在这种情况下,标准中继器看起来是一个不错的选择。它有助于以可重复的方式向页面添加元素。

    使用jqgrid插件可以很好地处理这个场景,它允许您使用JSON数据或XML更新表的内容。它比您发布的代码简单得多。我的建议是你花时间来原型化这两种方法。然后看看这两者的复杂性和可扩展性。例如,向表中添加列有多简单?添加分页有多简单?

    微软在其MVC模板中加入了jquery作为默认脚本。为什么?因为jquery正逐渐成为业界公认的改变游戏规则的工具。它大大减少了识别和使用DOM中元素所需的代码,并且几乎完全消除了对特定于浏览器的javascript和浏览器版本测试的需要。

    jquery非常适合在客户端向页面添加行为,例如菜单。它对于客户端验证(发送到页面的javascript比标准验证控件轻得多)等方面也非常有用。

    当您有定义良好的CSS时,jquery工作得非常好。当您了解secelector有多强大时,您可以用非常简洁的代码编写一些非常强大的jquery行为。看看这里的一些好例子:

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

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

    下班后我再加一些。:)

        2
  •  4
  •   Jonny Cundall    15 年前

    要回答其中一个问题,使用Visual Studio促进jQuery开发的一个工具是 jquery intellisense

        3
  •  3
  •   Sean Vieira    15 年前

    <假设最坏 使用javascript模板构建站点的重要部分而不进行回退,这无疑是一个可访问性问题。(这个 可以 不是问题,取决于网站部署的位置)。

    它也带来了维护问题,因为任何新开发人员都会开始使用它。 要了解他们在网站上工作时使用的javascript模板系统的语法、怪癖和问题(我假设他们正在访问Web服务以创建、更新和删除数据)。 </假设最坏

    恐怕我的工作经验还不够宽泛,不能说明这是否是用jquery在ASP.NET中开发的一种常见方法。但我希望不会。

    编辑: 正如Daniel指出的那样,在ASP.NET中有很多更好的方法可以在这里使用,所以除非这样做是为了解决一个非常特殊的业务需求,否则他们可能会遇到 比维克比 (我知道最好的方法来建造它)而你最好假设最坏的情况。

        4
  •  1
  •   kgiannakakis    15 年前

    正如您所说,ASP+Ajax工具包生成易于理解和维护的代码。但是,它确实将您限制在内置控件提供的内容,在某些情况下,它可能不那么有效。

    jquery和Web服务广泛用于生产网站。尤其是对于ASP.NET MVC站点,这是公认的方法。我个人不喜欢脚本块的想法。但这不是jquery的唯一方法。您可以有一个常规的ASP.NET网页,并使用jquery小部件来实现丰富的控件。对于Ajax功能,您需要启用Ajax的WCF服务。这将比使用更新面板更有效。

        5
  •  0
  •   Felan    15 年前

    大多数ASP.NET控件产生的HTML代码都很糟糕,使用表时有着狂野不羁的放弃,真是可耻。如果您希望使残疾友好的网站或(IMO)有效地使用CSS,那么这种生成不良的HTML是一个可访问性问题。我也遇到过这样的情况:生成的HTML会导致Excel中从Web导入数据等问题。您可以使用类似于CSS友好适配器的东西( http://www.asp.net/cssadapters/ )或者,如果您想减轻这个特定问题的大部分,甚至可以编写自己的适配器(大多数情况下不这样做)。ListView是.NET3.5中的一个不错的添加,它使开发人员能够更好地控制呈现的HTML。

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