03月 1st, 2007

2023-11-21 00:32
文章标签 03 2007 1st

本文主要是介绍03月 1st, 2007,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

导读:
  由于搜索引擎对aspx页面收录和html页面收录率的差别以及页面资源占用问题,我们很多时候需要实现ASPX页面动态转静态。网上也有很多人
  讨论其实现方法,本人实践后总结两种主流方法如下:
  第一种方法:
  使用模板转换,步骤如下:
  1、建立MyConvert.cs类文件
  using System;
  //记得添加以下三引用
  using System.Text;
  using System.Web;
  using System.IO;
  namespace TesConvert
  {
  ///
  /// MyConvert 的摘要说明。
  ///

  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文件,在
   下面添加 ,但是这样做的话,整个项目中都允许键入html标签了,暂时还不知道其他的方。
  缺点:这种方法是在ASP.net在页面所有内容生成后、输出内容前对页面内容进行操作以前曾说过用HttpModule来在Response前更改,不够灵活
  ,每行修改response,比较费力。
  第二种方法:
  重写AttributeCollection.Render,比较灵活(msdn如是说:“在呈现阶段,所有 ASP.NET 移动设备适配器都通过一个称为文本编写器的对象
  来编写它们的输出。文本编写器对象是从 TextWriter 基类创建的。”)
  可以写个基类,如:
  public class BasePage: System.Web.UI.Page
  {
   public BasePage()
   {
   }
   protected override void Render(System.Web.UI.HtmlTextWriter writer)
   {
   string name=Request.Url.AbsolutePath.Substring(1,Request.Url.AbsolutePath.Length-1).Replace(”aspx”,”htm”);
   string newurl=”";
   if(name.IndexOf(”/”)>0)
   {
   newurl=Server.MapPath(”../”) + name;
   }
   else
   {
   newurl=Server.MapPath(”./”) + name;
   }
   MemoryStream ms = new MemoryStream();
   StreamWriter sww = new StreamWriter(ms);
   StreamWriter swr = new StreamWriter(newurl);
   System.Web.UI.HtmlTextWriter htmlw = new HtmlTextWriter(swr);
   base.Render(htmlw);
   htmlw.Flush();
   htmlw.Close();
   string strLL = System.Text.Encoding.UTF8.GetString(ms.ToArray());
   Response.Write(strLL);
   Response.Redirect(Request.Url.AbsoluteUri.Replace(”aspx”,”htm”), true);
   }
  }
  然后在需要生成静态页面的页面中继承就可以了。
  说明:这种办法是在Asp.net的生成动作完成之后,再进行一次转换。
  缺点:觉得本质上应该还是属于频繁post的aspx页面。

本文转自
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/

这篇关于03月 1st, 2007的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/398562

相关文章

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

FreeRTOS内部机制学习03(事件组内部机制)

文章目录 事件组使用的场景事件组的核心以及Set事件API做的事情事件组的特殊之处事件组为什么不关闭中断xEventGroupSetBitsFromISR内部是怎么做的? 事件组使用的场景 学校组织秋游,组长在等待: 张三:我到了 李四:我到了 王五:我到了 组长说:好,大家都到齐了,出发! 秋游回来第二天就要提交一篇心得报告,组长在焦急等待:张三、李四、王五谁先写好就交谁的

Vue day-03

目录 Vue常用特性 一.响应更新 1. 1 v-for更新监测 1.2 v-for就地更新 1.3 什么是虚拟DOM 1.4 diff算法更新虚拟DOM 总结:key值的作用和注意点: 二.过滤器 2.1 vue过滤器-定义使用 2.2 vue过滤器-传参和多过滤器 三. 计算属性(computed) 3.1 计算属性-定义使用 3.2 计算属性-缓存 3.3 计算属

获取Excel文档的版本(2003或者2007)

因工作需要解析excel文档,用poi插件来进行处理,但是2003版本之前的和2007版本之后的解析方式不一样,开始,我们是以后缀名来区分的(2003之前是xls,2007之后是xlsx),后来发现,如果一个2003文档的后缀名被改成xlsx或反之,解析都会出现一些莫名其妙的问题,所以根据文档内容来判断版本是非常必要的。于是在网上找了很久终于找到一个切实可行的方法,代码如下 public s

【SpringMVC学习03】-SpringMVC的配置文件详解

在SpringMVC的各个组件中,处理器映射器、处理器适配器、视图解析器称为springmvc的三大组件。其实真正需要程序员开发的就两大块:一个是Handler,一个是jsp。 在springMVC的入门程序中,SpringMVC的核心配置文件——springmvc.xml为: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http:

浙大数据结构——03-树1 树的同构

这道题我依然采用STL库的map,从而大幅减少了代码量 简单说一下思路,两棵树是否同构,只需比较俩树字母相同的结点是否同构,即是否左==左,右==右或者左==右,右==左。 1、条件准备 atree和btree是存两个数结点字母,第几个就存输入的第几个结点的字母。 map通过结点的字母作为键,从而找到两个子节点的信息 都要用char类型 #include <iostream>#inc

python+selenium2轻量级框架设计-03读取配置文件

任何一个项目,都涉及到了配置文件和管理和读写,Python支持很多配置文件的读写,这里介绍读取ini文件。 以读取url和浏览器作为例子 #浏览器引擎类import configparser,time,osfrom selenium import webdriverfrom framework.logger import Loggerlogger = Logger(logger='

python+selenium2学习笔记unittest-03断言

断言的方法网上归纳的很多主要有以下这些 断言语法解释assertEqual(a, b) 判断a==bassertNotEqual(a, b)判断a!=bassertTrue(x)bool(x) is TrueassertFalse(x)bool(x) is FalseassertIs(a, b)a is bassertIsNot(a, b) a is not bassertIsNone(x) x

C++入门(03)萌新问题多(一)(未完待续)

文章目录 1. 一闪而过使用system("pause")使用cin.get() 1. 一闪而过 .exe 在用户计算机上运行后“一闪而过”,是因为控制台程序没有专门的用户图形界面,程序执行完所有代码后默认完成任务自动关闭 使用system(“pause”) 在程序的结尾处加入 system(“pause”),程序在执行完毕后等待用户按任意键继续。这是最简单的方法。 使

三文带你轻松上手鸿蒙的AI语音03-文本合成声音

三文带你轻松上手鸿蒙的AI语音03-文本合成声音 前言 接上文 三文带你轻松上手鸿蒙的AI语音02-声音文件转文本 HarmonyOS NEXT 提供的AI 文本合并语音功能,可以将一段不超过10000字符的文本合成为语音并进行播报。 场景举例 手机在无网状态下,系统应用无障碍(屏幕朗读)接入文本转语音能力,为视障人士提供播报能力。类似微信读书,可以实现将文章内容通过语音朗读,可以