热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[转载].net下的生成静态页面并分页.

主要的原理就是替换模板里的特殊字符。1、静态模板页面template.html,主要是定义了一些特殊字符,用来被替换。
主要的原理就是替换模板里的特殊字符。

1、静态模板页面 template.html,主要是定义了一些特殊字符,用来被替换。











Title


浏览 次 Time


Content


Pager






2、前态页面 NewsAdd.aspx,就是一个表单,用来填写新闻的标题和内容。

<%&#64; Page Language&#61;"C#" AutoEventWireup&#61;"false" validateRequest&#61;"false" CodeFile&#61;"NewsAdd.aspx.cs" Inherits&#61;"NewsAdd.Admin_AdminPanel_NewsAdd" %>
<%&#64; Register TagPrefix&#61;"FCKeditorV2" Namespace&#61;"FredCK.FCKeditorV2" Assembly&#61;"FredCK.FCKeditorV2" %>





















3、后台页面 NewsAdd.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Mysqlserver;
using System.IO;
using System.Text;
namespace NewsAdd
{
public partial class Admin_AdminPanel_NewsAdd : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
string strDate &#61; DateTime.Now.ToString("yyMMdd") &#43; "/" &#43; DateTime.Now.ToString("yyyymmddhhmmss");
string strFileName &#61; strDate &#43; ".shtml";//存储到数据库中
string strTitle&#61;Request.Form["Title"].ToString().Trim();//接收传过来的标题
string strContent&#61;Request.Form["Content"].ToString().Trim();//接收传过来的内容
string[] content &#61; strContent.Split(new Char[] {&#39; ¦&#39;});//对内容进行拆分&#xff0c;并保存到数组
int upbound &#61; content.Length;//数组的上限
SqlServerDataBase db &#61; new SqlServerDataBase();
bool success &#61; db.Insert("insert into inNews(Title,Content,FilePath)values(&#39;" &#43; strTitle &#43; "&#39;,&#39;" &#43; strContent &#43; "&#39;,&#39;" &#43; strFileName &#43; "&#39;)", null);
//if (success)
// Message.Text &#61; "添加成功&#xff01;";
/**创建当前日期的文件夹开始
string dir &#61; Server.MapPath("http://www.cnblogs.com/"&#43;"NewsFiles/"&#43;DateTime.Now.ToString("yyMMdd"));//用来生成文件夹
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
/**创建当前日期的文件夹结束
try
{
for (int i &#61; 0; i {
//string[] newContent &#61; new string[4];//定义和html标记数目一致的数组
StringBuilder strhtml &#61; new StringBuilder();

//创建StreamReader对象
using (StreamReader sr &#61; new StreamReader(Server.MapPath("http://www.cnblogs.com/" &#43; "NewsFiles/") &#43; "/template.html",Encoding.GetEncoding("gb2312")))
{
String oneline;
//读取指定的HTML文件模板
while ((oneline &#61; sr.ReadLine()) !&#61; null)
{
strhtml.Append(oneline);
}
sr.Close();
}

//为标记数组赋值
//SqlServerDataBase db &#61; new SqlServerDataBase();
DataSet ds &#61; db.Select("select top 1 NewsId from inNews order by NewsId desc", null);//获取id
string strTable &#61; "
upUrl Number downUrl
";//上下页表格&#xff0c;注意此处的upUrl&#xff08;上一页&#xff09;&#xff0c;Number&#xff08;页码分页&#xff09;&#xff0c;downUrl&#xff08;下一页&#xff09;
//这三个是用来替换的。

string FilePath&#61;"";
strhtml &#61; strhtml.Replace("Title", strTitle);
strhtml &#61; strhtml.Replace("NewsId", ds.Tables[0].Rows[0]["NewsId"].ToString());
strhtml &#61; strhtml.Replace("Time", DateTime.Now.ToString("yyyy/MM/dd"));
strhtml &#61; strhtml.Replace("Content", content[i]);
string strNumber &#61; "";//数字分页1&#xff0c;2&#xff0c;3……
for (int m &#61; 1; m <&#61;upbound; m&#43;&#43;)
{
if (m &#61;&#61; 1)//如果是第一页就显示成这个样子&#xff1a;20070524.shtml而不是20070524_1.shtml
strNumber &#61; strNumber &#43; " ["&#43;" " &#43; m &#43; " "&#43;"] ";
else
{
int n &#61; m - 1;//第三页的连接应该是20070524_2.shtml&#xff0c;以此类推
strNumber &#61; strNumber &#43; " [" &#43;" " &#43; m &#43; " "&#43;"] ";
}
}
if (upbound &#61;&#61; 0)//如果没有分页&#xff0c;就直接按日期时间保存
{
FilePath &#61; Server.MapPath("http://www.cnblogs.com/") &#43; "NewsFiles" &#43; "//" &#43; strDate &#43; ".shtml";
strhtml &#61; strhtml.Replace("Pager", "");
}
else//否则按20070524.shtml、20070524_1.shtml 这种效果保存
{
if (i &#61;&#61; 0)
FilePath &#61; Server.MapPath("http://www.cnblogs.com/") &#43; "NewsFiles" &#43; "//" &#43; strDate &#43; ".shtml";
else
FilePath &#61; Server.MapPath("http://www.cnblogs.com/") &#43; "NewsFiles" &#43; "//" &#43; strDate &#43; "_" &#43; i &#43; ".shtml";

if (i &#61;&#61; 0)//第一页不显示上一页
strTable &#61; strTable.Replace("upUrl", "");

if (i <&#61; 1)//上一页分页
strTable &#61; strTable.Replace("upUrl", " 上一页 ");
else
{
int p &#61; i - 1;
strTable &#61; strTable.Replace("upUrl", " 上一页 ");
}

if(upbound&#61;&#61;1)//如果只有一页&#xff0c;则不显示页码
//strNumber&#61;"";
strTable &#61; strTable.Replace("Number", "");
else
strTable &#61; strTable.Replace("Number", strNumber);//页码替换
/**/
if(i&#61;&#61;upbound-1)//最后一页不显示下一页
strTable &#61; strTable.Replace("downUrl", "");

if (i !&#61; upbound - 1)//下一页分页
{
int q &#61; i &#43; 1;
strTable &#61; strTable.Replace("downUrl", " 下一页 ");
}
else
{
int j &#61; upbound - 1;
strTable &#61; strTable.Replace("downUrl", " 下一页 ");
}

strhtml &#61; strhtml.Replace("Pager", strTable);
}
//创建文件信息对象--------------------------------------------
FileInfo finfo &#61; new FileInfo(FilePath);
//以打开或者写入的形式创建文件流
using (FileStream fs &#61; finfo.OpenWrite())
{
//根据上面创建的文件流创建写数据流
StreamWriter sw &#61; new StreamWriter(fs, System.Text.Encoding.Default);
//把新的内容写到创建的HTML页面中
sw.WriteLine(strhtml);
sw.Flush();
sw.Close();
}
}
}
catch (Exception err)
{
//输出异常信息
Response.Write(err.ToString());
}
}
}
}


请不要直接拷贝使用&#xff0c;里面的路径需要更改&#xff0c;但程序绝对没问题&#xff0c;在我本地已经测试通过。

另外在使用时&#xff0c;比如我要把新闻的内容分成4页&#xff0c;就应该这样写&#xff1a;111 ¦222 ¦333 ¦444

转:https://www.cnblogs.com/fx2008/archive/2011/12/10/2283086.html



推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 突破MIUI14限制,自定义胶囊图标、大图标样式,支持任意APP
    本文介绍了如何突破MIUI14的限制,实现自定义胶囊图标和大图标样式,并支持任意APP。需要一定的动手能力和主题设计师账号权限或者会主题pojie。详细步骤包括应用包名获取、素材制作和封包获取等。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
author-avatar
陈建希佳旭
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有