快速业务通道

使用User Control做HTML生成

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-04-12

User Control大家肯定不会陌生,在使用ASP.NET的过程中,除了aspx页面,最常见的就莫过于ascx了。ascx是一个有独立逻辑的组件,提供了强大的复用特性,合理使用,能够大大提高开发效率。通过User Control直接生成HTML内容其实已经是一个比较常用的技巧了(尤其在AJAX时代),不过网络上这方面的内容比较少,很多人还是在苦苦地拼接字符串,因此在这里我通过一个实例简单介绍一下这个技巧。  对一个对象(文章,图片,音乐,etc.)进行评论是应用中最常见的功能之一。首先,我们定义一个Comment类,以及其中会用到的“获取”方法:
public partial class Comment
{

public DateTime CreateTime { get; set; }

public string Content { get; set; }
}

public partial class Comment
{

private static List<Comment> s_comments = new List<Comment>
{

new Comment
{

CreateTime = DateTime.Parse("2008-5-1"),

Content = "今天天气不错"

},

new Comment
{

CreateTime = DateTime.Parse("2008-5-2"),

Content = "挺风和日丽的"
},

new Comment
{

CreateTime = DateTime.Parse("2008-5-3"),

Content = "我们下午没有课"

},

new Comment
{

CreateTime = DateTime.Parse("2008-5-1"),
Content = "这的确挺爽的"

}

};


public static List<Comment> GetComments(int pageSize, int pageIndex, out int totalCount)
{

totalCount = s_comments.Count;
List<Comment> comments = new List<Comment>(pageSize);
for (int i = pageSize * (pageIndex - 1);

i < pageSize * pageIndex && i < s_comments.Count; i++)
{
comments.Add(s_comments);
}

return comments;

}
}
为了显示一个评论列表,我们可以使用一个用户控件(ItemComments.aspx)来封装。自然,分页也是必不可少的:
<asp:Repeater runat="server" ID="rptComments">

<ItemTemplate>

时间:<%# (Container.DataItem as Comment).CreateTime.ToString() %><br />

内容:<%# (Container.DataItem as Comment).Content %>
</ItemTemplate>

<SeparatorTemplate>

<hr />

</SeparatorTemplate>

<FooterTemplate>

<hr />

</FooterTemplate>

</asp:Repeater>

<% if (this.PageIndex > 1)

{ %>

<a href="/ViewItem.aspx?page=<%= this.PageIndex - 1 %>" title="上一页">上一页</a>
<% } %>

<% if (this.PageIndex * this.PageSize < this.TotalCount)

{ %>

<a href="/ViewItem.aspx?page=<%= this.PageIndex + 1 %>" title="上一页">下一页</a>
<% } %>
public partial class ItemComments : System.Web.UI.UserControl
{

protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);

this.rptComments.DataSource = Comment.GetComments(this.PageSize,

this.PageIndex, out this.m_totalCount);

this.DataBind();

}

public int PageIndex { get; set; }
public int PageSize { get; set; }
private int m_totalCount;
public int TotalCount

{

get

{

return this.m_totalCount;

}

}
}

然后再页面(ViewItem.aspx)中使用这个组件:
<div id="comments"><demo:ItemComments ID="itemComments" runat=&quo

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号