快速业务通道

关于WebForms以及一些ASP.NET开发上的经验(2)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
行改造的做法不算),但是优秀的样式开发人员大 都是坚定的Web标准支持或推广者,ASP.NET对于标准支持不佳,难以控制样式的说法满天飞扬。

我想为WebForms喊冤。不过首先我会打倒以GridView为首的复杂控件(包扩DataList、FormView等等 )并狠狠踩上几脚。有人说,当抛弃了GridView之后,用WebForms还有什么意义?其实类似的话也不断在 我说要抛弃ViewState和(复杂)的PostBack时出现。如果您觉得抛弃了这些东西WebForms就失去意义的 话,那么我想说,ViewState、PostBack、GridView远不是WebForms的全部。我认为,Control模型(或者 说组件化模型)才是WebForms的关键。而这个模型的“基础”是绝对优秀的。下面我会进行一些展示,虽 然这些展示我觉得是基础中的基础。

首先我们先来看一下最常用的用户控件的表现吧(DemoControl.ascx):

<%@ Control Language="C#" AutoEventWireup="true" %>
<%= "Hello World!" %>

然后将它放在页面里:

<div>
  <uc1:DemoControl ID="DemoControl1" runat="server" />
</div>

在浏览器里打开页面会发现如下的代码:

<div>
  Hello World!
</div>

多干净的代码,我甚至连多余的空格都没有去除。还有一个例子就是Master Page, <asp:ContentPlaceHolder />也不会产生任何多余的代码。这说明了使用用户控件搭出的WebForms 页面,是不会出现多余的“脏”代码的。如果您在观察那些基础控件,TextBox,CheckBox(不设Text属 性),Panel等等,亦或是加上runat=server的HTML元素,无一例外(当然客户端ID的确还是比较长,关 于这个问题我会在以后的文章进行讨论)。

那么肮脏的Tag是哪里来的呢?当然是以GridView为首的复杂控件。那么如果我们要生成批量数据,又 该怎么办呢?现在来看看Repeater的表现吧,就以最常见的无序列表为例:

<asp:Repeater runat="server" ID="rptItems">
  <HeaderTemplate>
    <ul>
  </HeaderTemplate>
  <ItemTemplate>
     <li>
      <img src="<%# Eval("ImagePath")) %>" alt="<%# Eval ("Title") %>" />
    </li>
  </ItemTemplate>
   <FooterTemplate>
    </ul>
   </FooterTemplate>
</asp:Repeater>

还是在浏览器里察看HTML(我这里就不贴出来了),一行多余的代码也没有。

Repeater是ASP.NET 2.0中我最喜欢用的控件,它的功能很简单,把ItemTemplate和 AlternatingItemTemplate的内容返回生成在页面上,并且将HeaderTemplate和FooterTemplate的内容显 示在头尾。除此之外——没了。但是这已经足够了,对于绑定控件来说,还需要什么呢?这里面每一行代 码都由我们自己编写,想定义样式也易如反掌,我们对于HTML的控制没有任何损失。

另外,有些开发人员总认为ASP.NET中的DataTable绑定的方式让我们无法写出建模良好的代码。就算 使用ObjectDataSource,在控制上也会有诸多不便。但这个也是一种误解,我们完全可以将领域模型中的 对象绑定到视图里的控件上。首先是ASPX的内容:

<asp:Repeater runat="server" ID="rptItems">
  <HeaderTemplate>
    <ul>
  </HeaderTemplate>
  <ItemTemplate>
     <li>
      <img src="<%# this.GetImagePath(Container.DataItem) % >"
        alt="<

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号