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

标签 c# asp.net jquery

我最近正在审查由两个不同承包商编写的一些代码,它们都是基本的 ASP.NET 管理站点。这些站点允许用户查看和编辑数据。非常简单的 CRUD 网关。

一组尽最大努力使用内置的 ASP + AJAX 工具包控件,并尽最大努力使用尽可能多的内置控件。它几乎与我见过的大多数 asp 开发者一致。我发现代码更易于阅读和维护。

另一个使用 jQuery,代码大量标记有脚本 block ,然后用于从 javascript 文件构建页面。

示例脚本 block :

  <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 标记的 block 外,aspx 文件中没有任何代码。

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

其次,第二种方式会导致什么类型的问题?人们真的会在实际生产环境中使用这样的代码吗?是否有工具可以帮助使用 visual studio 促进 jQuery 开发,和/或 Microsoft 是否打算在未来简化这种做法?

最佳答案

我的答案是两者结合使用。在适当的地方使用每一个。

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

使用 JQGrid 插件可以很好地处理这种情况,它允许您使用 JSON 数据或 XML 更新表格的内容。它比您发布的代码简单得多。我的建议是您花时间对这两种方法进行原型(prototype)设计。然后看两者的复杂度和扩展性。例如,向表中添加一列有多容易?添加分页有多容易?

Microsoft 已将 JQuery 作为默认脚本包含在其 MVC 模板中。为什么?因为 JQuery 在行业中被公认为改变游戏规则。它大大减少了识别和使用 DOM 中的元素所需的代码,并且几乎完全消除了对特定于浏览器的 javascript 和浏览器版本测试的需要。

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

当您定义良好的 CSS 时,JQuery 会非常有效。当您理解了选择器的强大功能后,您就可以用极其简洁的代码编写一些非常强大的 JQuery 行为。看看这里的一些很好的例子:

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

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

我会在下类后添加更多内容。 :)

关于c# - 开发简单 ASP.NET 站点的最佳实践(内置控件或 JQuery + 脚本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2914858/

相关文章:

c# - 如何使 Response.Write 显示特殊字符,如 "<",">"

jquery - 单击提交按钮时将 Kendo 网格行发送到服务器

c# - 将 RouteData.Values 与操作参数结合起来

c# - 将长数相加作为学习练习

c# - .Net 内存增长问题

javascript - 单独切换具有相同类的单个 div 的类

javascript - 如何设置更改单选按钮的值?

c# - .NET 线程池 QueueUserWorkItem 同步

javascript - 如何强制超链接显示打开/保存对话框而不是在浏览器中打开它?

javascript - 双向绑定(bind) [(ngmodel)] 不受 jquery 更改事件的影响