ASP.NETが静的ページを生成する考え方の紹介

12388 ワード

今日は静的ページの生成を検討し,学習内容を以下のように簡単に記録する.
現在、静的ページを生成する方法は大きく2つに分けられ、1つは動的ページアドレスに直接アクセスし、生成したhtmlコードを静的ページに保存することである.もう1つは、ページテンプレートを読み取り、その中で置換する必要があるコンテンツを置換することによって生成される.前の方法は簡単で、単一のページや少量のページを生成するのに実用的であり、大量のページに対して、ページ間の関連が複雑である場合、第1の方法はあまり便利ではありません.テンプレートを使用する方法はやや複雑であるが,ここでは詳細に議論せず,あまり複雑ではないプロジェクトへの第1の方法の応用のみを与える.
生成する静的ページエントリのページアドレス(例えばIndex.aspxは、href=で始まるリンクのページアドレスを検索することにより、一定のルールで置換後、静態化後のIndexを生成する.html、Index.aspxのすべてのリンクページが順次静的化され、ループされます.
次のコードの例では、ページ内の動的リンクアドレスを規則的に命名された静的アドレスに置き換える方法を示します.


  
  
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;

namespace WebTest
{
public partial class Test : System.Web.UI.Page
{
protected void Page_Load( object sender, EventArgs e)
{
string content = " <a target=\"_blank\" href=\"Product.aspx?classId=123\"><a target=\"_blank\" href=\"Product-view.aspx\"><a target=\"_blank\" href=\"Product-view.aspx?id=59\"><a target=\"_blank\" href=\"Product-view.aspx?id=11159\"> " ;
string newContent = content;
Regex rg
= new Regex( " href= " ); //
int len = 5 ; //
MatchCollection mc = rg.Matches(content);
foreach (Match m in mc)
{
int startIndex = m.Index + len + 1 ; // URL
int endIndex = content.IndexOf( " \" " , m.Index + len + 1 ); // URL
string originalURL = content.Substring(startIndex, endIndex - startIndex); // URL
string newURL = "" ;
newURL
= originalURL.Replace( " .aspx?classId= " , " -class- " ); //
newURL = newURL.Replace( " .aspx?id= " , " - " ); //
newURL = newURL.Replace( " .aspx " , "" );
newURL
+= " .html " ;

newContent
= newContent.Replace(originalURL + " \" " , newURL + " \" " ); // URL
}

Response.Write(
string .Format( " :{0}<br/> :{1} " , content.Replace( " < " , " &lt; " ).Replace( " > " , " &gt; " ), newContent.Replace( " < " , " &lt; " ).Replace( " > " , " &gt; " )));
}
}
}

このページの実行結果は次のとおりです.
元の内容:新しい内容:以上是稍微的想法,必须继续研究更多的内容学习.