100分散:再分享一个ASP.NET长文章分页显示函数,先到先得分

dzswej 2008-12-05 01:00:21
加精
主要说明下:

1.该函数非本人原创,而是在此基础大力修改,因为原的,分页到2、3页就不能正确出来内容了;减少一些不必要的步骤;
2.CSS样式自己定;
3.个人感觉性能还是很不错的,http://www.dzswej.com/news_id692.html 可以试下


public string NoHTML(string Htmlstring) //去除HTML标记
{
//删除脚本
Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);
//删除HTML
Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);

Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);", "", RegexOptions.IgnoreCase);

Htmlstring.Replace("<", "");
Htmlstring.Replace(">", "");
Htmlstring.Replace("\r\n", "");
Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();

return Htmlstring;
}
public string OutputBySize(string p_strContent)//分页函数
{
string m_strRet = "";
int m_intPageSize = 2500;//文章每页大小
int m_intCurrentPage = 1;//设置第一页为初始页
int m_intTotalPage = 0;
int m_intArticlelength = NoHTML(p_strContent).Length;//文章长度
if (m_intPageSize < m_intArticlelength)
{//如果每页大小大于文章长度时就不用分页了
if (m_intArticlelength % m_intPageSize == 0)
{//set total pages count
m_intTotalPage = m_intArticlelength / m_intPageSize;
}
else
{//if the totalsize
m_intTotalPage = m_intArticlelength / m_intPageSize + 1;
}
if (Request.QueryString["pages"] != null)
{//set Current page number
try
{//处理不正常的地址栏的值
m_intCurrentPage = Convert.ToInt32(Request.QueryString["pages"]);
if (m_intCurrentPage > m_intTotalPage)

m_intCurrentPage = m_intTotalPage;

}

catch
{
m_intCurrentPage = m_intCurrentPage;
}
}
//set the page content 设置获取当前页的大小
if (m_intCurrentPage < m_intTotalPage)
{
m_intPageSize = m_intCurrentPage < m_intTotalPage ? m_intPageSize : (m_intArticlelength - m_intPageSize * (m_intCurrentPage - 1));
m_strRet += p_strContent.Substring(m_intPageSize * (m_intCurrentPage - 1), m_intPageSize);
}
else if(m_intCurrentPage == m_intTotalPage )
{
int mm_intPageSize=m_intArticlelength - m_intPageSize * (m_intCurrentPage - 1);
m_strRet += p_strContent.Substring(m_intArticlelength - mm_intPageSize);
}

string m_strPageInfo = "<p></p>";
for (int i = 1; i <= m_intTotalPage; i++)
{
if (i == m_intCurrentPage)
m_strPageInfo += "第" + i + "页 | ";
else
m_strPageInfo += "<a href=news_id" + Request.QueryString["wzid"] + "_pages" + i + ".html>" + i + "</a>|";
}
//输出显示各个页码
this.labPageNumber.Text = m_strPageInfo;

}
else
{
m_strRet += p_strContent;
}
return m_strRet;
}

protected void Page_Load(object sender, EventArgs e)
{
SqlDataReader dr = shuju.duquzt(Int32.Parse(Request.QueryString["wzid"]));
if (dr == null) return;
if (dr.Read())
{
this.labContent.Text = OutputBySize(dr["wzcontent"].ToString());//调用该函数
...


前台页面分页处使用的控件:<asp:Label ID="labPageNumber" Font-Size="14px" runat="server"></asp:Label>

...全文
7097 334 打赏 收藏 转发到动态 举报
写回复
用AI写文章
334 条回复
切换为时间正序
请发表友善的回复…
发表回复
王伍 2011-09-09
  • 打赏
  • 举报
回复
http://download.csdn.net/source/3216130长篇文章分页源码 包裹富文本编辑器使用 添加新闻 下下来就能用,源码数据库 连接配置好已经,三层架构
love_No 2011-08-01
  • 打赏
  • 举报
回复
嗯;看看、学习一下
lsylyf 2011-06-29
  • 打赏
  • 举报
回复
Regex 这个是什么?
阿桐 2011-04-11
  • 打赏
  • 举报
回复
[Quote=引用 94 楼 redsnow521 的回复:]
楼主又来贡献了
[/Quote]+1
zhujia1124 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 51 楼 dzswej 的回复:]
引用 43 楼 yangzhangyu832 的回复:
。。。你好。。。这个页面 <a href=news_id" + Request.QueryString["wzid"] + "_pages" + i + ".html>" + i + " </a> 是个不存在的页面,是怎么先进行创建的页面呢。。。点击链接就会提示出错是不存在的页面



URL重写的,实际上是个动态的页面
[/Quote]
wangxiaoyi886 2011-03-08
  • 打赏
  • 举报
回复
还不让看,晕
fhq1990810 2010-11-24
  • 打赏
  • 举报
回复
不错 哦 !!!!!!!
  • 打赏
  • 举报
回复
[Quote=引用 305 楼 ava_song 的回复:]
哦,我觉得这个好像还行哦。
试试看,不过,我这边自己也有一套分页显示的。改天整理下贴出来共分享。
[/Quote]改下链接就好了,lz是静态页面。
感谢楼主分享
wshsba 2010-11-23
  • 打赏
  • 举报
回复
来迟了,不过学了
馨鑫 2010-11-17
  • 打赏
  • 举报
回复
不错,好东西,值得收藏!
花花糖葫芦 2010-04-22
  • 打赏
  • 举报
回复
感谢lz的贡献
可是我用过以后 还是有问题哟
就是在分页之后无法正常跳转
蓝掌柜 2010-02-25
  • 打赏
  • 举报
回复
public void DanBianFY()
{
string str = "文章内年多的坚持推动|最终换来圆满的结|果,民众期盼已久的成都赴台湾包机将|于12月19日首年多的坚持推动最终换来圆满的结果,民众期盼已久的成都赴台湾包机将于12月19日首年多的坚持推动最终换|来圆满的结果,民众期盼已久的成都赴台湾包机将于12月19日首容";
string id = Request.QueryString["Id"];//文章ID
string[] array = str.Split('|');//在要分页的地方插入|
string num = "", content = "";
if (Request.QueryString["page"] != null)
content = array[Convert.ToInt32(Request.QueryString["page"]) - 1];
else
content = array[0];
for (int i = 0; i < array.Length; i++)
{
int j = i + 1; num += " <a href=FY.aspx?Id=" + id.ToString() + "&page=" + j.ToString() + ">" +

j.ToString() + " </a>";
}
Label1.Text = content + " <br/> <div align=center> " + num + " </div>";
}
蓝掌柜 2010-02-25
  • 打赏
  • 举报
回复
哈哈怎么那么热闹啊
我来晚点了

这个分页是 以长度分页
有没有自定义长度呢
如果你规定是400个字后分页
那如果正好对图片了

要求在后台 做个添加分页,以“|”来做分页????

大家讨论下
hj88624 2010-02-06
  • 打赏
  • 举报
回复
这是按字节截取的,若后台内容实用编辑器提交的,显示时有html代码出现,楼主可有解决的办法?
xu_119 2010-02-02
  • 打赏
  • 举报
回复
显示几页过后 还是不能正确显示啊 咋办
xu_119 2010-02-02
  • 打赏
  • 举报
回复
。。。
zhufu2082 2010-02-01
  • 打赏
  • 举报
回复
支持,感谢分享
qianjin110 2010-01-23
  • 打赏
  • 举报
回复
楼主又来贡献了
jianshao810 2009-12-19
  • 打赏
  • 举报
回复
tanlianguang 2009-11-27
  • 打赏
  • 举报
回复
收藏
加载更多回复(312)

62,049

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧