-
最近、Web サイトを静的にしたいと思ったので、自分でいくつかのメソッドを作成し、みんなと議論できるように投稿しました。
/// <概要>
/// Web サイトの静的関数クラス
/// </概要>
パブリック クラス CreateHtml
{
/// <概要>
/// テンプレートの内容を読み取る
/// </概要>
/// <param name="template">テンプレートの相対パス</param>
/// <returns>テンプレートのコンテンツ、読み取り失敗は "" を返します</returns>
パブリック文字列 Html_ReadTemplate(文字列テンプレート)
{
#地域
StringBuilder str = new StringBuilder();//ストレージ パターンの内容
if (テンプレート != null && テンプレート != "" && template.Length > 0)//if
{
試す
{
using (StreamReader sr = new StreamReader(System.Web.HttpContext.Current.Server.MapPath(template), Encoding.GetEncoding("utf-8")))
{
文字列 tempStr;
while ((tempStr = sr.ReadLine()) != null)//ファイルの末尾が読み込まれていない場合
{
str.Append(tempStr);
}
sr.Close();
}
}
catch (例外例)
{
null を返します。
}
}
str.ToString()を返します;
#エンドリージョン
}
/// <概要>
/// 生成されたファイルの絶対パスとファイル名に基づいてファイルを生成します
/// </概要>
/// <param name="fileAbsolutePath">ファイルの絶対パス</param>
/// <param name="htmlName">ファイル名を生成</param>
/// <param name="htmlNote">ファイルの内容を書き込む</param>
/// <returns>ファイルのステータスを生成します、1: 成功 0: 失敗</returns>
public int Html_WriteTemplate(string fileAbsolutePath, string htmlName,string htmlNote)
{
#地域
if (fileAbsolutePath != null && fileAbsolutePath != "" && fileAbsolutePath.Length > 0 && htmlName != null && htmlName != "" && htmlName.Length > 0)
{
試す
{
using (FileStream fs = new FileStream(fileAbsolutePath + "\" + htmlName, FileMode.Create, FileAccess.Write, FileShare.Write))
{
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.GetEncoding("utf-8"));
sw.Write(htmlNote);
sw.Close();
fs.Close();
return 1;//ファイルは正常に生成されました
}
}
catch (例外例)
{
0を返します。
}
}
return 0;//ファイル生成に失敗しました
#エンドリージョン
}
/// <概要>
/// 読み取られたすべてのコンテンツに従ってページを読み取り、各ページを「|」で区切ります。
/// </概要>
/// <param name="contentText">コンテンツ</param>
/// <param name="pageLogo">ページングロゴ</param>
/// <returns>コンテンツがページ分割された後の文字列。各ページは "|" で区切られます</returns>
public string Html_BackPageData(string contentText,string pageLogo)
{
#地域
int tempcount = 0;
StringBuilder sb = 新しい StringBuilder();
while (tempcount >= 0)
{
intindex = contentText.IndexOf(pageLogo);//ページングロゴ
if (index == -1)//ページングがない場合
{
sb.Append(contentText);
壊す;
}
それ以外
{
sb.Append(contentText.Substring(0,index)+"|");
int start = インデックス + pageLogo.Length + 1;
int end = contentText.Length-index-pageLogo.Length - 1;
contentText=contentText.Substring(開始、終了);
}
一時カウント++;
}
sb.ToString() を返します。
#エンドリージョン
}
/// <概要>
/// コンテンツ、ホームページ、前のページ、ページ番号、次のページ、最後のページ (コンテンツの一部) に対応するページング フラグを生成します。
/// </概要>
/// <param name="currPageIndex">現在のページ インデックス</param>
/// <param name="pageCount">総ページ数</param>
/// <param name="noteName">ファイル名 (サフィックスを除いたファイル名のみ)</param>
/// <returns>コンテンツに基づいて生成された対応するページング フラグ</returns>
public string Html_Pager_Sign(int currPageIndex, int pageCount, string noteName)
{
#地域
string allSeprNote = "<table><tr><td> $firstpage$</td><td> $uppage$</td><td> $pagenumber$</ td><td> $drownpage$</td><td> $lastpage$</td></tr></table>";
文字列 seprTempStr = "";
for (int i = 1; i <= pageCount; i++)//各ページのページ番号を生成するループ (このループはページ番号のみを生成します)
{
int n = i - 1;
//最初のページの場合
if(i==1)
{
seprTempStr += "<a href='" + noteName + ".html'>" + i+" "+ "</a>";
}
それ以外
{
seprTempStr += "<a href='" + noteName +"-"+n+ ".html'>" + i+" ";
}
}
allSeprNote = allSeprNote.Replace("$pagenumber$", seprTempStr);// ページ番号を置換します
//ホームページと前のページを生成
if (currPageIndex == 0)//現在のページが最初のページの場合、前のページまたはホームページへのリンクはありません。
{
allSeprNote = allSeprNote.Replace("$firstpage$", "Homepage");// ホームページを置き換えます
allSeprNote = allSeprNote.Replace("$uppage$", "previous page");//前のページを置き換えます
}
else if (currPageIndex == 1)//現在のページが 2 ページ目の場合、前のページとホームページへのリンクがあり、前のページとホームページへのリンクは同じです。機能は同じです
{
allSeprNote = allSeprNote.Replace("$firstpage$", "<a href='" + noteName + ".html'>Homepage</a>");// ホームページをリンクに置き換えます
allSeprNote = allSeprNote.Replace("$uppage$", "<a href='" + noteName + ".html'>前のページ</a>");//前のページは 2 ページ目なので置き換えます。ホームページと同じです
}
else//別のページの場合
{
int temppageindex = currPageIndex - 1; //前のページ番号
allSeprNote = allSeprNote.Replace("$firstpage$", "<a href='" + noteName + ".html'>Homepage</a>");// ホームページを置き換えます
allSeprNote = allSeprNote.Replace("$uppage$", "<a href='" + noteName +"-"+temppageindex+ ".html'>前のページ</a>");//前のページを置き換えます
}
//最後のページと次のページを生成
if (currPageIndex == pageCount - 1)//現在のページが最後のページの場合、次のページと最後のページは同じ機能を持ち、リンクはありません。
{
allSeprNote = allSeprNote.Replace("$lastpage$", "last page");//最後のページを置き換えます
allSeprNote = allSeprNote.Replace("$drownpage$", "next page");//次のページを置き換えます
}
else//別のページの場合
{
int temppageindex = currPageIndex+1;//次のページ番号
allSeprNote=allSeprNote.Replace("$lastpage$", "<a href='" + noteName + "-" + (pageCount - 1) + ".html'>最後のページ</a>");//末尾を生成ページ
allSeprNote=allSeprNote.Replace("$drownpage$", "<a href='" + noteName + "-" + temppageindex + ".html'>次のページ</a>");
}
すべての SeprNote を返します。
#エンドリージョン
}
/// <概要>
/// リストページのページングフラグを生成します
/// </概要>
/// <param name="pageTotal">総ページ数</param>
/// <param name="currentPage">現在のページのインデックス (0 から始まります)</param>
/// <param name="pageSize">各ページに表示されるコンテンツ アイテムの数</param>
/// <param name="name">ファイル名 (サフィックスなし)</param>
/// <returns>ページングフラグ</returns>
public string Html_Pager_Multi(int pageTotal, int currentPage, int pageSize, 文字列名, 文字列パス)
{
#地域
ページ合計 = ページ合計 - 1;
StringBuilder sb = 新しい StringBuilder();
//ホームページと前のページへのリンクを生成します
if (currentPage == 0)//現在のページが最初のページの場合
{
sb.Append(" ホームページ 前のページ ");
}
else if (currentPage == 1)//現在のページが 2 ページ目の場合
{
sb.Append(" <a href='" + name + ".html" + ''>ホームページ</a>");
sb.Append(" <a href='" + name + ".html" + ''>前のページ</a> ");
}
それ以外
{
sb.Append(" <a href='" + name + ".html" + ''>ホームページ</a>");
sb.Append(" <a href='" + name + "-" + (currentPage - 1) + ".html'>前のページ</a> ");
}
int IndexStart = currentPage - 5;
int IndexEnd = currentPage + 5;
if (indexStart <= 0)
{
インデックス開始 = 0;
インデックスエンド = 10;
}
if (indexStart > 0)
{
IndexStart = currentPage - 5;
インデックス終了 = 現在のページ + 5;
}
if (currentPage >= pageTotal-10)
{
IndexStart = pageTotal - 10;
インデックス終了 = ページ合計;
}
//詳細なページ番号を生成する
for (int i = インデックス開始; i <= インデックス終了; i++)
{
if (i == 現在のページ)
{
sb.Append(" " + (i+1) + " ");
}
else if (i == 0)//現在のページが 2 ページ目の場合は、個別に処理する必要があります
{
sb.Append(" <a href='" + name + ".html'>" + (i + 1) + "</a> ");
}
それ以外
{
sb.Append(" <a href='" + name + "-" + i + ".html'>" + (i + 1) + "</a> ");
}
}
//次のページと最後のページを生成します
if (currentPage == pageTotal)//現在のページが最後のページの場合
{
sb.Append(" 次のページ ");
sb.Append(" 最後のページ ");
}
それ以外
{
sb.Append(" <a href='"+name+"-"+(currentPage+1)+".html'>次のページ</a> ");
sb.Append(" <a href='"+name+"-"+pageTotal+".html'>最後のページ</a>");
}
sb.Append(" " + (currentPage + 1) + "/" + (pageTotal + 1));
sb.Append(" Go to:<select name="qq" id="ddlIndexList" onchange="javascript:location.href=this.value;">" );
stringAbsolutePaths = HttpContext.Current.Request.Url.ToString();//URLを取得
AbsolutePaths =AbsolutePaths.Substring(0,AbsolutePaths.LastIndexOf("/"))+"\" + path;//Web サイトのルート パス URL を取得します
for (int j = 1; j <= (pageTotal+1); j++)
{
if(j==1)
{
sb.Append("<option value='" +AbsolutePaths+" \"+name + ".html'>" + j + "</option>");
}
それ以外
{
sb.Append("<option value='" +AbsolutePaths+" \"+name + "-" + (j - 1) + ".html'>" + j + "</option>");
}
}
sb.Append("</select>");
sb.Append("<script type="text/javascript" language="javascript">");
if (currentPage == 0)//最初のページ
{
string d = "document.getElementById("ddlIndexList").value = "" + name + ".html";";
sb.Append("document.getElementById("ddlIndexList").value = ""+name+".html";");
}
それ以外
{
string k = " document.getElementById("ddlIndexList").value = "" + name + "-" + currentPage + ".html";";
sb.Append(" document.getElementById("ddlIndexList").value = "" + name+"-"+currentPage + ".html";");
}
sb.Append("</script>");
sb.ToString() を返します。
#エンドリージョン