`

03月 1st, 2007

阅读更多
导读:
  由于搜索引擎对aspx页面收录和html页面收录率的差别以及页面资源占用问题,我们很多时候需要实现ASPX页面动态转静态。网上也有很多人
  讨论其实现方法,本人实践后总结两种主流方法如下:
  第一种方法:
  使用模板转换,步骤如下:
  1、建立MyConvert.cs类文件
  using System;
  //记得添加以下三引用
  using System.Text;
  using System.Web;
  using System.IO;
  namespace TesConvert
  {
  /// <summary><br>  /// MyConvert 的摘要说明。 <br>  /// </summary>
  public class MyConvert
  {
   public MyConvert()
   {
  //
  // TODO: 在此处添加构造函数逻辑
  //
   }
   public bool WriteFile(string strText,string strContent,string strAuthor)
   {
  string path = HttpContext.Current.Server.MapPath(”/TesConvert/news/”);//定义html文件存放路径
  Encoding code = Encoding.GetEncoding(”gb2312″);//定义文字编码
  // 读取模板文件
  string temp = HttpContext.Current.Server.MapPath(”/TesConvert/text.html”);
  StreamReader sr=null;
  StreamWriter sw=null;
  string str=”";?
  try
  {
   sr = new StreamReader(temp, code);
   str = sr.ReadToEnd(); // 读取文件
  }
  catch(Exception exp)
  {
   HttpContext.Current.Response.Write(exp.Message);
   HttpContext.Current.Response.End();
   sr.Close();
  }
  string htmlfilename=path + DateTime.Now.ToString(”yyyyMMddHHmmss”)+”.html”;
  // 替换内容
  // 这时,模板文件已经读入到名称为str的变量中了
  str = str.Replace(”ShowArticle”,strText); //模板页中的ShowArticle
  str = str.Replace(”title”,strText);
  str = str.Replace(”content”,strContent);
  str = str.Replace(”author”,strAuthor);
  // 写文件
  try
  {
   sw = new StreamWriter(htmlfilename,false,code);
   sw.Write(str);
   sw.Flush();
  }
  catch(Exception ex)
  {
   HttpContext.Current.Response.Write(ex.Message);
   HttpContext.Current.Response.End();
  }
  finally
  {
   sw.Close();
  }
  return true;
   }
   }
  }
  2、TestNews.aspx文件:
  添加三和TextBox分别为:tbx_Title、tbx_Content、tbx_Author和一个Button:btn_AddNews。
  TestNews.aspx.cs文件
  private void btn_AddNews_Click(object sender, System.EventArgs e)
   {
  MyConvert Hover = new MyConvert();
  
  if(Hover.WriteFile(this.txb_Title.Text.ToString(),Server.HtmlDecode(this.txb_Content.Value),this.txb_Author.Text.ToString()))
  {
   Response.Write(”添加成功”);
  }
  else
  {
   Response.Write(”生成HTML出错!”);
  }
   }
  3、添加模板text.html文件?
  ShowArticle
  
  title

  content

  author
  
  说明:一.news文件夹必须赋予asp.net用户写入的权限。这是一个简单的实现例子,实际项目必须先将数据保存到数据库下面,在datagird中
  调用数据库下面html文件的URL地址。二.默认情况下,我们是不能向TextBox、TextArea中添加html语法的,必须修改config文件,在
  <system.web>下面添加<pages validaterequest="”false”"></pages>,但是这样做的话,整个项目中都允许键入html标签了,暂时还不知道其他的方。 <br>  缺点:这种方法是在ASP.net在页面所有内容生成后、输出内容前对页面内容进行操作以前曾说过用HttpModule来在Response前更改,不够灵活 <br>  ,每行修改response,比较费力。 <br>  第二种方法: <br>  重写AttributeCollection.Render,比较灵活(msdn如是说:“在呈现阶段,所有 ASP.NET 移动设备适配器都通过一个称为文本编写器的对象 <br>  来编写它们的输出。文本编写器对象是从 TextWriter 基类创建的。”) <br>  可以写个基类,如: <br>  public class BasePage: System.Web.UI.Page <br>  { <br>   public BasePage() <br>   { <br>   } <br>   protected override void Render(System.Web.UI.HtmlTextWriter writer) <br>   { <br>   string name=Request.Url.AbsolutePath.Substring(1,Request.Url.AbsolutePath.Length-1).Replace(”aspx”,”htm”); <br>   string newurl=”"; <br>   if(name.IndexOf(”/”)&gt;0) <br>   { <br>   newurl=Server.MapPath(”../”) + name; <br>   } <br>   else <br>   { <br>   newurl=Server.MapPath(”./”) + name; <br>   } <br>   MemoryStream ms = new MemoryStream(); <br>   StreamWriter sww = new StreamWriter(ms); <br>   StreamWriter swr = new StreamWriter(newurl); <br>   System.Web.UI.HtmlTextWriter htmlw = new HtmlTextWriter(swr); <br>   base.Render(htmlw); <br>   htmlw.Flush(); <br>   htmlw.Close(); <br>   string strLL = System.Text.Encoding.UTF8.GetString(ms.ToArray()); <br>   Response.Write(strLL); <br>   Response.Redirect(Request.Url.AbsoluteUri.Replace(”aspx”,”htm”), true); <br>   } <br>  } <br>  然后在需要生成静态页面的页面中继承就可以了。 <br>  说明:这种办法是在Asp.net的生成动作完成之后,再进行一次转换。 <br>  缺点:觉得本质上应该还是属于频繁post的aspx页面。 <br><br>本文转自 <br><a href="http://blog.oteam.cn/2007/03/01/aspnet-%E5%8A%A8%E6%80%81%E8%BD%AC%E9%9D%99%E6%80%81%E9%A1%B5%E9%9D%A2%E7%9A%84%E4%B8%A4%E7%A7%8D%E6%96%B9%E6%B3%95%E6%80%BB%E7%BB%93%E8%BD%AC%E8%B4%B4/">http://blog.oteam.cn/2007/03/01/aspnet-%E5%8A%A8%E6%80%81%E8%BD%AC%E9%9D%99%E6%80%81%E9%A1%B5%E9%9D%A2%E7%9A%84%E4%B8%A4%E7%A7%8D%E6%96%B9%E6%B3%95%E6%80%BB%E7%BB%93%E8%BD%AC%E8%B4%B4/</a></system.web>
分享到:
评论

相关推荐

    ST7789V_SPEC_V1.4

    文档中也提到了关于如何控制ST7789V显示数据的输出格式,例如8位数据总线用于12位像素格式(RGB4-4-4)时,使用特定寄存器值"3Ah"设置为"03h"。这在编程和配置控制器时是必要的操作步骤。 注意,由于文档中部分内容...

    ST21控制箱培训资料.ppt

    2. **焊接变压器连接**:焊接变压器需接在电源端子的"01-03"上。选择电线规格时,要考虑焊接变压器的容量,例如35~55KVA的变压器建议使用38mm²以上的电线,以此类推。 3. **冷却水系统**:冷却水管连接在设备背面...

    [NuGet] NuGet 高级程序设计 第1版 (英文版)

    ☆ 资源说明:☆ [Apress] NuGet 高级程序设计 第1版 (英文版) [Apress] Pro NuGet 1st Edition (E-Book) ...[出版日期] 2012年03月06日 [图书页数] 312页 [图书语言] 英语 [图书格式] PDF 格式

    [Android] Android 开发学习手册 第1版 (英文版)

    ☆ 资源说明:☆ [奥莱理] Android 开发学习手册 第1版 (英文版) [奥莱理] Learning Android 1st Edition (E-Book) ...[出版日期] 2011年03月28日 [图书页数] 270页 [图书语言] 英语 [图书格式] PDF 格式

    [jQuery] jQuery 移动网络应用开发 核心技术 第1版 (英文版)

    ☆ 资源说明:☆ [Packt Publishing] jQuery 移动网络应用开发 核心技术 第1版 (英文版) [Packt Publishing] jQuery Mobile ...[出版日期] 2012年05月03日 [图书页数] 246页 [图书语言] 英语 [图书格式] PDF 格式

    上市公司注册地所在省份和城市(更新至2023年3月)

    -03 广东省 深圳市 2 000002 000002.SZ 万科A 1 991-01-29 广东省 深圳市 4 000004 000004.SZ ST国华 1991-01-14 广东省 深圳市 5 000005 000 005.SZ ST星源 1990-12-10 广东省 深圳市 6 000 006 ...

    simwalk价目表

    - **代码:** ST-03 - **名称:** 3D模块 - **价格:** 4,500欧元 ### 四、升级与支持服务 针对已经拥有SimWalk PRO许可证的用户,提供每年一次的升级与支持服务,价格为1,150欧元。 - **代码:** ST-04 - **名称:** ...

    [concrete5] concrete5 初学者指南 第1版 (英文版)

    ☆ 资源说明:☆ [Packt Publishing] concrete5 初学者指南 第1版 (英文版) [Packt Publishing] concrete5 Beginner's Guide ...[出版日期] 2011年03月18日 [图书页数] 320页 [图书语言] 英语 [图书格式] PDF 格式

    [C#] 深入浅出 C# 第1版 (英文版)

    ☆ 资源说明:☆ [奥莱理] 深入浅出 C# 第1版 (英文版) [奥莱理] Head First C# 1st Edition (E-Book) ...[出版日期] 2007年12月03日 [图书页数] 784页 [图书语言] 英语 [图书格式] PDF 格式

    DPS2-24W24-2T数字控制器使用说明书.pdf

    - **中国RoHS指令**:从2007年3月1日起施行,要求限制使用铅、汞、镉、六价铬、多溴联苯和多溴二苯醚等有害物质。 以上是DPS2-24W24-2T数字控制器的关键知识点总结,涵盖了产品的基本介绍、技术参数、使用方法及...

    [C#] Effective C# 改善C#程序的50种方法 第1版 (英文版)

    ☆ 资源说明:☆ [Addison-Wesley Professional] Effective C# 改善C#程序的50种方法 第1版 (英文版) [Addison-Wesley ...[出版日期] 2004年12月03日 [图书页数] 330页 [图书语言] 英语 [图书格式] CHM 格式

    gnu-arm-eclipse插件依赖资料-03

    gnu-arm-eclipse插件依赖资料-03,包含st公司主要芯片的信息,压缩包分为四个,本资源为第一个。博客windows+eclipse+gnuarmeclise+jlink平台搭建一文的配套资源,不使用gnuarmeclise插件的朋友勿下。

    有伴汇铺.apk 分析报告1

    分析日期为2022年2月3日,文件大小为6.06MB,其MD5、SHA1和SHA256哈希值分别为`a639153017191571565b32208b0b166d`、`6e0c89058b115a39653ed4cab0713dea03cb39d3`和`bb90990990ae5ba6eca75f76e8693bfdabd53616af396f...

    ColorCollect.apk 分析报告1

    - 证书有效期从2019年1月23日至2118年12月30日。 - 证书哈希算法为SHA256,MD5和SHA1也给出。 - 序列号:0x84b4188 综合分析,ColorCollect应用请求了多种权限,包括对网络、存储、摄像头、电话状态等的访问。其中...

    百金汇.apk 分析报告1

    该APP由摸瓜APP分析平台(mogua.co)进行分析,分析日期为2022年1月25日。报告中并未提供任何域名、URL或邮箱线索。 **文件信息** - 文件名为baijinhui.apk,文件大小为8.97MB。 - MD5值为472c0ec901a4024332e34920...

    oracle asm rac

    [root@node1 ~] iscsiadm -m discovery -t st -p 192.168.10.10 (存储地址) 192.168.10.10:3260,1 iqn.2012-09.com.example:server.target4 [root@node1 ~]#iscsiadm -m node -T iqn.2012-09....

    SAP自开发报表月操作次数统计报表源码

    可以查询最近八天的用户查询报表次数,最近四个月的操作次数统计,包含按用户统计月操作次数。需要导入一个GUI

    ap6212a0_a33_sc3817r_服务器验证通过_bt已经通了_wifi需要修改配置_需要再次验证_20170626_1549.7z

    [ 3.968638] [mmc]: sdc2 set ios: clk 25000000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 3.968734] [mmc]: mclk 0xf1c20090 0xc100000b [ 3.989421] Bluetooth: BNEP filters: protocol ...

Global site tag (gtag.js) - Google Analytics