关于WebForms以及一些ASP.NET开发上的经验(2)
%# Eval("Title") %>" /> </li> </ItemTemplate> <FooterTemplate> </ul> </FooterTemplate> </asp:Repeater> 然后是Code Behind:
GetArticles方法的返回值可以是List<Article>或任何一个实现了 IEnumerable<Article>接口的类型,这个样在ItemTemplate中访问Container.DataItem就会得到这 个Article对象。我们在Code Behind类里定义一个protected方法,由于aspx最终会被编译为Code Behind 类的子类,因此我们就可以在ASPX页面中调用GetImageUrl方法。在方法内部我们可以将object类型的 DataItem转换成Article类型的对象,然后就可以做任意的处理了。 非常方便,非常灵活,还有什么可挑剔的呢?。 有。比如我们想要使用每行10个元素,最后一行如果不足就让右边空着的方式来展示,Repeater可能 就难以实现了(其实不能这么说,按标准应该还是使用无序列表,用样式来进行控制,Repeater完全够用 )。ASP.NET 1.1和2.0可能我们会使用DataList控件,只要把RepeaterColumns属性设为10即可。可惜 DataList生成的元素要么是<table />,要么是<span />和<br />,让人头疼。但是 在ASP.NET 3.5中又多了一个ListView控件,使用这个控件进行展示可以分组循环,可以指定容器,真可 谓无比强大。重要的是ListView和Repeater一样,所有的HTML都由自己控制,一个多余的字符都没有。 有了Repeater和ListView,真可谓打遍天下无敌手,任何页面的展示方式都不在话下。 我们再走个极端吧,我们来看下面的呈现方式:
上面的例子在ASPX页面中使用了内联的foreach语句进行显示。这样生成代码无论从干净还是自定义 角度来说,都可以的让任何开发方式“无地自容”。但关键是,这个方式……为什么……恩,没错,说的 难听,这是原始的ASP的开发方式;说的好听,这是“先进”ASP.NET MVC框架中模板的写法。这是不是很 讽刺?但是这个的确是事实。Rick Strahl大牛也在他的Blog中写到:“我还记得在早些时候,那些 ASP.NET的疯狂追随者们是多么不屑使用内联的脚本标签,或者使用显式的URL而不是PostBack来进行开发 的做法,而其中的一些人现在又毫不犹豫地张开双臂去迎接MVC框架,这难道不讽刺吗?”而且由于 ASP.NET MVC的特性(从Controller传递到View的只是一个ViewData对象),因此真正ASP.NET MVC的“模 板”的写法还要多一次Cast,也就是类似于如下的写法(当然ASP.NET MVC可以使用强类型的ViewData, 这样就免去了这样强行的Cast):
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |