none
asp.net 开发网站时产生很多垃圾代码? RRS feed

  • 问题

  • 我在做网页开发的时候,只要用asp.net控件就会产生一些垃圾代码,这个问题我很早就发现了,所以我以前一致把html代码写在.cs文件里

    比如:

              stringBiuder sb = new stringBiuder();
              dataset ds = ..........
               for(int i=0;i < ds.tables[0].rows.cout;i++)
               {
                      sb.append("..............")
               } 

              html控件.innerHtml = sb.tostring();
              以前就这么写...

     最近新来了同事,看到我写的代码后,说不能这样写,


            最初开发.net   就是为了将html 和代码分离,他让我用数据控件,

    但是会产生很多代码,以前看书的时候书上说 其实网站本身就是一个长字符串,如果用数据控件的话产生很多代码就会加长网站字符串的长度和大小,多多少少会影响速度

     请问各位同胞,我应该怎样写,才比较合理?

    • 已移动 孟宪会Moderator 2010年9月1日 1:09 (发件人:.NET Framework 一般性问题讨论区)
    2010年8月30日 15:27

答案

  • 我不明白楼主说的“垃圾代码”的意思。用我的理解就是无效无用的代码吧?

    其实是这样的:每一个控件在服务器编译后返回客户端都会转换成浏览器解析的html代码,这些代码都是组成网页的表现形式。当然其中的逻辑结构是规范化的。

    记得在我以前我不明白为什么table中还有个tbody标签,当时删除也没发现有什么错误。上网查了一下才明白其中的原理,于是乎我就明白了什么叫做“标准化”。当然你也可以不遵循W3C标准化

     

    再或者是这么一种情况,允许你在变成的时候动态生成HTML代码,就像前面几位朋友说的一样,也许你在输出HTML的同时没有严格的控制,导致了输入“多余”的代码,正所谓你的垃圾代码吧?呵呵

     

    如果楼主认为的“垃圾代码”是所谓的“标准化”的话,那么我想我们理解的就是一个概念了

    • 已标记为答案 xiawei_hi 2010年9月8日 6:55
    2010年9月1日 1:26

全部回复

  • 控件是可以复用的代码,如果你的HTML生成代码是复制粘贴出来的,就应该改为可以复用的代码.生成冗余HTML代码只能说用错了控件或者控件没写好.

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2010年8月30日 16:06
    版主
  • 自己编程产生HTML代码的时候会直接面临很多问题,从安全、容错性和开发效率等几个方面来说我们都不建议一般开发人员不使用控件而自己编程产生HTML代码,因为对于缺乏经验的人来说那样做代码质量完全没有保障。

    ASP.NET控件所产生的大部分所谓的垃圾代码都是在很多场合中有实际作用的,有一些可以在用不到的时候关闭掉。只有当你已经对ASP.NET的原理有了较为深入的研究,并且已经有能力编写独立的ASP.NET控件的时候,才该考虑自己编程产生HTML代码的事情。

     

    如果你实在不喜欢ASP.NET Web Form模式,你也可以考虑用ASP.NET MVC。


    Most questions i'm interested in might have two or more possible answers i know or i don't know. So please read question carefully before you try to answer, and explan your question detailedly before asking for help. 很多看起来简单的问题都存在多种可能性,如果您不能详细的解释,别人就不能正确判断出您所遭遇的实际状况,因而不能给出最适合的解决办法。在您没有给出详细信息的情况下,施助者只有张贴大量有可能有关的解决办法。而您可能没有耐心阅读所有这些东西,在这种情况下您就客观地形成了对施助者的伤害——除非“施助者”并没有用心去尝试帮助您。 同样地,当您尝试解答一个看起来“好像遇到过”的问题的时候,您也需要详细地阅读和理解这个问题。如果您不了解问题的细节,您可能会给出不相关的或者无助于解决当前问题的解答。
    2010年8月30日 17:50
  • 建议你可以使用DataList,Repeater和功能教全面,但是比较复杂的ListView来进行数据绑定开发,后台编写事件。

    因为微软当初的构想就是让开发者方便,所以把网站开发弄得和网页一样,封装了许多细节问题,结果冗余代码较多。如果你是从Java或者非asp.net来的,建议MVC是你不错的选择。

    2010年8月31日 2:21
  • 那大家意思,还是用控件比较合理?
    2010年8月31日 3:41
  • 你好

    我覺得要看情況的,  你可以嘗試在某些 控制中的 EnableViewState=False , ViewState 是用來幫助ASP.Net 記住在PostBack 之前的 內容的, 如果你的 控制只是用來顯然資料, 你可以考慮把他關閉... 看看能不能減小這些 垃圾代碼

    Please correct me if my concept is wrong


    Chi
    2010年8月31日 4:26
  • 能够理解楼主,每个页面都带有的FORM(并且包含一长串对浏览者来说等于垃圾的字符串)、以及直接在网页内镶的javascript、服务器空间的status码、等等。

    如果不喜欢这样的结构,可以选用“ASP.NET MVC” 模式开发,这是另一种开发方式,不会包含楼主所述的“无用代码”。

    2010年8月31日 17:22
  • 垃圾不垃圾都是自己控制的,不存在产生垃圾的问题
    【孟子E章】
    2010年9月1日 1:09
    版主
  • 我不明白楼主说的“垃圾代码”的意思。用我的理解就是无效无用的代码吧?

    其实是这样的:每一个控件在服务器编译后返回客户端都会转换成浏览器解析的html代码,这些代码都是组成网页的表现形式。当然其中的逻辑结构是规范化的。

    记得在我以前我不明白为什么table中还有个tbody标签,当时删除也没发现有什么错误。上网查了一下才明白其中的原理,于是乎我就明白了什么叫做“标准化”。当然你也可以不遵循W3C标准化

     

    再或者是这么一种情况,允许你在变成的时候动态生成HTML代码,就像前面几位朋友说的一样,也许你在输出HTML的同时没有严格的控制,导致了输入“多余”的代码,正所谓你的垃圾代码吧?呵呵

     

    如果楼主认为的“垃圾代码”是所谓的“标准化”的话,那么我想我们理解的就是一个概念了

    • 已标记为答案 xiawei_hi 2010年9月8日 6:55
    2010年9月1日 1:26