炼丹炉中的孙悟空

Only For Study
posts(23) comments(131) trackbacks(3)
  • 博客园
  • 联系
  • 订阅 订阅
  • 管理

与我联系

  • 发短消息

搜索

 

常用链接

  • 我的参与
  • 我的新闻
  • 最新评论
  • 我的标签

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

我参与的团队

  • asp.net开发团队(1/231)

我的标签

  • js 全选 不选(1)
  • cookie 中文 丢失 乱码(1)
  • 静态页 模板引擎 (1)

随笔分类(39)

  • Ajax(1)
  • ASP.NET(16)
  • C#(6)
  • DIV+CSS(2)
  • Framework(4)
  • HTTP 协议(4)
  • MSIL&CLR(3)
  • SQL(1)
  • W3C(2)

随笔档案(23)

  • 2008年9月 (1)
  • 2008年6月 (1)
  • 2008年5月 (1)
  • 2008年4月 (20)

文章分类

  • MBA

最新随笔

  • 1. c#字符串打乱顺序,用于生成文章!
  • 2. 根据选择动态生成表单暨对kijiji发布信息的研究
  • 3. 要命的键盘与鼠标
  • 4. asp.net2.0自动根据用户自定义字数生成带分页的静态(HTML)页
  • 5. 讨论:去除Form后的情况
  • 6. 建议
  • 7. 细说Convert和Parse到底那个效率高!
  • 8. 存储过程编写经验和优化措施
  • 9. 常用技术点备案(定期更新)
  • 10. 从云网和财付通中得到的提示

积分与排名

  • 积分 - 10042
  • 排名 - 3430

最新评论

  • 1. re: c#字符串打乱顺序,用于生成文章!
  • --引用-------------------------------------------------- 墨小黑: 黑帽seo ----------------------------------...
  • --Jake.SHI
  • 2. re: c#字符串打乱顺序,用于生成文章!
  • 黑帽seo
  • --墨小黑
  • 3. re: c#字符串打乱顺序,用于生成文章!
  • 打乱了还能够还原回去么?
  • --天堂口
  • 4. re: c#字符串打乱顺序,用于生成文章!
  • 这样的文章不是很乱么?
  • --墨小黑

阅读排行榜

  • 1. 要命的键盘与鼠标(2411)
  • 2. 细说Convert和Parse到底那个效率高!(2301)
  • 3. asp.net2.0自动根据用户自定义字数生成带分页的静态(HTML)页(2106)
  • 4. 来一张ASP.NET生命周期的彩图(141)
  • 5. .net/c#中栈和堆的区别及代码在栈和堆中的执行流程详解之一(126)

评论排行榜

  • 1. 要命的键盘与鼠标(56)
  • 2. asp.net2.0自动根据用户自定义字数生成带分页的静态(HTML)页(42)
  • 3. 细说Convert和Parse到底那个效率高!(20)
  • 4. c#字符串打乱顺序,用于生成文章!(4)
  • 5. 常用技术点备案(定期更新)(3)

View Post

asp.net2.0自动根据用户自定义字数生成带分页的静态(HTML)页

 闲来无事,其他的人都在忙着迎新生,正好要用到生成静态页的东西,于是开始搜索,但是一直没有找到我自己想要的合适的东西,比如我要有自己的文件夹,可以根据自己的需要放进去,我要生成按年/月/日分开的静态页完整的RL举个例子来说就是:

 http://www.***.com/news/sport/20070908/1_1.html

其中呢像news/sport/20070908 都是动态生成的!并且要求生成出来的静态页要能够自己分页!

    有了这个需求,下面大概介绍一下我的思路,首先就是你的服务器要有fso权限,那么你就可以生成文件夹了!生成的文件夹呢就是你存放html文件的path,那么我们还需要定义html文件的名称如1_1.html,其中第一个1是新闻的id,第二个1呢就是页码,生成静态页的思想呢用到的就是标签替换的思想!当然我这里没有实现按照时间段批量生成,不过考虑到这才是第一个版本,以后还会陆续添加,来看看图片吧!

      

    这个呢是大概的样子,其中所在文件夹一定要这样定义如:news/sport/  千万不要丢掉最后一个“/”。系统会根据你定义的字数自动的读取数据库中的内容来决定一共要分几页。 你可以定义分页连接的样式,还可以定义分页打开的目标,默认呢是在新的一个打开。

这就是生成的样子啦!看title 还有地址栏的地址。

 

好了下面来看看大概的代码:

    主要有两个方法 分别为 creatfile() 和creathtml() 看方法名就知道 他们是创建文件夹和创建html的!

 

private void creatHTML()
    
...{
                
        
// 以下为获取用户数据 可自定义
        SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["strConn"].ToString());
        
string Sql = "select * from testt";
        SqlDataAdapter dr
= new SqlDataAdapter(Sql,conn);
        
        DataSet mydata 
= new DataSet();
        dr.Fill(mydata);
        
        
string title = mydata.Tables[0].Rows[0]["title"].ToString();
        
string content = mydata.Tables[0].Rows[0]["newscontent"].ToString();
        
        
// 定义分页所需变量
        int contentLen = content.Length;    // 获取文章总字数
        int pageCount = 0;  // 定义总页数
        int pageLen = int.Parse(this.txtFontLen.Text.ToString());   // 获取用户自定义每页要显示的字数
        string pageCurrent = "";   // 定义当前页码
        int currentLen = 0;     //定义当前所在的字节位
        
        
// 文章字数和每页字数做余,判断要分的页数。
        if(contentLen%pageLen == 0)
        
...{
            pageCount 
= contentLen/pageLen;
        }

        
else
        
...{
            
// 如果不是正好为零需要增加一页
            pageCount = (contentLen/pageLen) + 1;
        }
 

 

由于暂时不想开源!不过你可以通过反编译拿到代码!呵呵!我没有混淆

 

 private string checkFile()
    
...{
        
this.filePath = this.txtFile.Text.ToString().Trim();
        
// 获取用户输入的文件夹的层次
        string[] fileClass = filePath.Split('/');
        
        
int i = fileClass.Length;   //计算文件夹的层次
        
        
int j = 0;
        
        
string pathO = "";  //定义最终的路径
        
        
while(j<i)
        
...{
            
if(j == 0)  // 一定要区分0和非零的数据
            ...{
                pathO 
= fileClass[j].ToString();
            }

            
            
string pathF = Server.MapPath(pathO);
            
            
// 创建文件夹
            if(!System.IO.Directory.Exists(pathF))
            
...{
                
try
                
...{
                System.IO.Directory.CreateDirectory(pathF);
                }

                
catch(Exception ex)
                
...{
                    Response.Write(ex.Message);
                }

            }

            
if(j<i-1)   // 因为pathO在 j = (i-1) 时还会再次计算 会导致数组越界 所以区分j。
            ...{
                pathO 
= pathO + "\" +fileClass[j+1].ToString();
                
            }

            
else if(j == (i-1))
            
...{
                pathO 
= pathO+"\"+ fileClass[j].ToString();  
            }

            j
++;
        }

        
// 根据用户输入的文件夹生成文件夹
在这里只是给大家一个思路!具体的你可以自己写 我并没有贴出核心的代码!

 

 html模板页的代码!

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
    
<title>$title</title>
    
<link rel="stylesheet" rev="stylesheet" href="../CSS/Main.css"  type="text/css" />
</head>
<body>
    
<div style="margin:0px auto; text-align:center; padding:2px;width:80%; border:1px solid #d7d7d7;">
        
<div style=" text-align:center; float:left; width:100%; margin:0px 0px 10px 0px;">
            
<span class="fs13 isbold cblack">$title</span>
            
<br />
            
<hr style="text-align:center; size:1px;" />
        
</div>
        
<div style=" text-align:left; float:left; width:100%; margin:0px 0px 10px 0px;">
            
<span class="fs12" style="line-height:20px;">$content</span>
        
</div>
        
<div style=" margin:0px auto; text-align:center; width:98%; border:1px solid #d7d7d7; background-color:#ececec; height:20px;">
            
<span class="fs12">$page</span>
        
</div>
    
</div>
</body>
</html>

 想要的留个邮箱吧!

希望高手帮我指正!

Tag标签: 静态页 模板引擎

posted on 2008-04-29 09:59 Jake.SHI 阅读(2106) 评论(42)  编辑 收藏 所属分类: ASP.NET 、C#

View Comments

#1楼    回复  引用  查看    
2008-04-29 10:09 | 李战      
#2楼    回复  引用  查看    
打击一下楼主,实际中估计用处不大.
你的分页直接判断内容的长度,不知道楼主有没有想过内容中有html标签的问题?
2008-04-29 10:10 | 狼Robot      
#3楼 [楼主]   回复  引用  查看    
@狼Robot

呵呵!我非常想知道此类问题的答案!呵呵!这也是我希望解决的问题!有思路或者有代码的朋友过来看看哦!指导一下!
2008-04-29 10:12 | Jake.SHI      
#4楼    回复  引用  查看    
xtb_sp@163.com
发一份给我看看吧
2008-04-29 10:19 | 阿滨       
#5楼    回复  引用    
解决办法就是在要分页的地方插入分页标签
这是很多CMS的通用做法
2008-04-29 10:23 | jejwe [未注册用户]
#6楼    回复  引用    
--引用--------------------------------------------------
Jake.SHI: @狼Robot

呵呵!我非常想知道此类问题的答案!呵呵!这也是我希望解决的问题!有思路或者有代码的朋友过来看看哦!指导一下!

--------------------------------------------------------
最简单的办法就是添加手动分页符
html代码的问题还有html转义的问题,如果程序自动解析的话是相当麻烦的
2008-04-29 10:26 | ASP.NET CMS [未注册用户]
#7楼    回复  引用  查看    
您好,非常感谢帖主提供了那么好的文章以供拜读,您能提供给我相关的源代码么?谢谢您.这样我就能巩固这一块所学的知识.交叉应用能力得到增强.我的邮箱地址是:audience_yipinmei@yahoo.com.cn


最后,仍然表达我的感激崇拜之情。
2008-04-29 10:57 | 大宋提刑官      
#8楼 [楼主]   回复  引用  查看    
@ASP.NET CMS
然后用正则表达式分开 遇到比如标记的分页符可能是@page@就分页对吧!
@大宋提刑官
别崇拜!呵呵!我也是菜鸟!哈哈!晚上发给你!
2008-04-29 11:01 | Jake.SHI      
#9楼    回复  引用    
ronaldosssss@163.com
麻烦您给我发一份 可以吗
2008-04-29 11:15 | ronaldosssss [未注册用户]
#10楼 [楼主]   回复  引用  查看    
@ronaldosssss
呵呵!不用问 可不可以!肯定可以的!哈哈!
2008-04-29 11:17 | Jake.SHI      
#11楼    回复  引用    
能不能给我发一份,互相学习,不胜感激
2008-04-29 11:17 | 好 [未注册用户]
#12楼 [楼主]   回复  引用  查看    
呵呵!留邮箱就可以啦!不用问可不可以 能不能的啦!
2008-04-29 11:22 | Jake.SHI      
#13楼    回复  引用    
kiven.li@cn.agenda-asia.com
2008-04-29 11:36 | lilei [未注册用户]
#14楼    回复  引用    
我的邮箱 xlpan085@hotmail.com 谢谢
2008-04-29 11:42 | xiaoliang [未注册用户]
#15楼    回复  引用    
我的邮箱 yanzx_hehan@163.com 谢谢
2008-04-29 11:57 | Jasons [未注册用户]
#16楼    回复  引用    
我的email是: subo105@sina.com.cn
谢谢楼主啊,有空多交流啊。
2008-04-29 12:05 | winxp105 [未注册用户]
#17楼    回复  引用  查看    
对,手动插入分页符是比较实用的正解。如果用正则过滤的话,效率会非常低地!
2008-04-29 12:24 | E-freer      
#18楼    回复  引用    
--引用--------------------------------------------------
Jake.SHI: @ASP.NET CMS
然后用正则表达式分开 遇到比如标记的分页符可能是@page@就分页对吧!
@大宋提刑官
别崇拜!呵呵!我也是菜鸟!哈哈!晚上发给你!

--------------------------------------------------------
是的固定一个分页标记进行分页,但是这就要求分页符规定死,文章内容不能出现分页符
如果程序按照文章大小分的话,很复杂,因为要考虑到html嵌套的问题,还有html转义的问题
例如你不可能把一个<p></p>里面的内容分成2页吧,这样html代码就乱了,还有类似&nbsp;这样的转义也一样,总之很麻烦
2008-04-29 13:21 | ASP.NET CMS [未注册用户]
#19楼    回复  引用    
我的邮箱 luckdv@126.com 谢谢
2008-04-29 13:35 | 小胡胡 [未注册用户]
#20楼    回复  引用    
longen_516@126.com
2008-04-29 14:22 | 骨头 [未注册用户]
#21楼    回复  引用  查看    
zwei1121@126.com 谢谢
2008-04-29 14:22 | zwei      
#22楼    回复  引用    
kaka820123@126.com 我要一份
2008-04-29 14:27 | aces2004 [未注册用户]
#23楼 [楼主]   回复  引用  查看    
@ASP.NET CMS
呵呵!分页符的话你可以规定的很复杂比如@YourDomain.cOM@类似namespace一样东东 ,这个重复性很小很小的!呵呵!
除了这样的解决方案 还有没有别的啦!有一点就是假如我们的用户不会html,他在可视状态下 掺入分页符 ,也有可能把<p>这样的元素分开!这样的怎么处理!
2008-04-29 15:56 | Jake.SHI      
#24楼    回复  引用  查看    
谢谢,给我来一份cbzly@163.com
2008-04-29 16:05 | 艺手遮天      
#25楼    回复  引用  查看    
谢谢楼主,我正在研究这个呢,太感谢了,可以发给我一份吗,sooboo_sjn@yahoo.com.cn
2008-04-29 16:29 | 阿小南      
#26楼    回复  引用    
麻烦楼主也发份给我吧,谢谢。yjwang0621@163.com
2008-04-29 16:58 | 新手请关照 [未注册用户]
#27楼    回复  引用    
我要一份呀.nhlinkin@163.com
2008-04-29 17:01 | 菲 [未注册用户]
#28楼    回复  引用    
给我一份源码吧
2008-04-29 19:19 | 李mf [未注册用户]
#29楼    回复  引用  查看    
什么都不说了哈,511391577@163.com
2008-04-29 22:45 | 留恋星空      
#30楼    回复  引用  查看    
给我一份源码吧
2008-04-29 23:14 | Poplar.Young      
#31楼    回复  引用  查看    
给我一份源码吧 ,谢谢
2008-04-29 23:15 | Poplar.Young      
#32楼    回复  引用    
wowacn@163.com
xiexie
2008-04-30 10:50 | aalexa [未注册用户]
#33楼    回复  引用    
jia3294255@126.com给我一份吧!好吗?
2008-04-30 11:21 | smileman [未注册用户]
#34楼    回复  引用    
lixinsheng007888@163.com

谢谢了!
2008-04-30 16:32 | lxs [未注册用户]
#35楼    回复  引用    
testry@163.com
麻烦发一份给我,
谢谢.
2008-05-01 13:09 | 痞子菜 [未注册用户]
#36楼    回复  引用  查看    
yezizhe@163.com
麻烦发一份给我,
谢谢.
2008-05-05 11:04 | yezizhe      
#37楼    回复  引用    
csharp_programmer[AT]163.com
谢谢
2008-05-13 10:14 | 37楼 [未注册用户]
#38楼    回复  引用    
麻烦发一份给我,
谢谢.
2008-05-19 14:33 | wxk [未注册用户]
#39楼    回复  引用    
老大,现在正急这个呢,我正愁新闻分页咋做的,请务必给我发一份,万分感激。
邮箱:sunli-333hotmail.com
2008-05-24 13:25 | 孙秋明 [未注册用户]
#40楼    回复  引用    
老大,少打个@.
邮箱:sunli-333@hotmail.com
2008-05-24 13:27 | 孙秋明 [未注册用户]
#41楼    回复  引用    
--引用--------------------------------------------------
兄弟.现在正正愁这个呢,请给我发一份,万分感激。
邮箱:xbs8530@126.com
--------------------------------------------------------
2008-06-11 16:44 | xbs [未注册用户]
#42楼    回复  引用    
能不能也给我发一份..!

weisheng.lu@163.com 谢谢.!
2008-06-15 22:50 | weisheng [未注册用户]
新用户注册  刷新评论列表  

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
网站首页

新闻频道

社区

小组

博问

网摘

闪存

找找看

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      

相关文章:
温故知新ASP.NET 2.0(C#)系列
Scott Mitchell的ASP.NET2.0数据教程系列
使用Visual Studio2005入门.Net2.0系列视频教程
ASP.NET AJAX入门系列
Virtual Earth ASP.NET 控件将于 7 月发布
NHibernate 2.0.0.Beta1发布了
新人学习asp.net求助
asp.net开发wap问题
提高asp.net水平
asp.net 连接 Access

相关链接:

所属分类的其他文章:
根据选择动态生成表单暨对kijiji发布信息的研究
要命的键盘与鼠标
asp.net2.0自动根据用户自定义字数生成带分页的静态(HTML)页
讨论:去除Form后的情况
建议
细说Convert和Parse到底那个效率高!
常用技术点备案(定期更新)
从云网和财付通中得到的提示
来一张ASP.NET生命周期的彩图
使用HttpHandler 实现无页面退出和防止盗链

最新IT新闻:
Google向Wine贡献更多代码
苹果创始人Steve Wozniak称iPod将被淘汰
福布斯:硅谷日子将更难过 谁下一个倒下
微软老矣 尚能赚否?