-
나는 최근에 웹사이트를 정적으로 만들고 싶었기 때문에 몇 가지 방법을 직접 작성하여 모두와 토론할 수 있도록 게시했습니다.
/// <요약>
/// 웹사이트 정적 함수 클래스
/// </summary>
공개 클래스 CreateHtml
{
/// <요약>
/// 템플릿 내용 읽기
/// </summary>
/// <param name="template">템플릿 상대 경로</param>
/// <returns>템플릿 콘텐츠, 읽기 실패가 ""를 반환합니다.</returns>
공개 문자열 Html_ReadTemplate(문자열 템플릿)
{
#지역
StringBuilder str = new StringBuilder();//스토리지 패턴 콘텐츠
if (템플릿 != null && 템플릿 != "" && template.Length > 0)//if
{
노력하다
{
(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.닫기();
}
}
잡기 (예외예외)
{
null을 반환;
}
}
str.ToString()을 반환합니다.
#endregion
}
/// <요약>
/// 생성된 파일의 절대 경로와 파일명을 기반으로 파일을 생성합니다.
/// </summary>
/// <param name="fileAbsolutePath">파일 절대 경로</param>
/// <param name="htmlName">파일 이름 생성</param>
/// <param name="htmlNote">파일 내용 쓰기</param>
/// <returns>파일 상태 생성, 1: 성공 0: 실패</returns>
공개 int Html_WriteTemplate(string fileAbsolutePath, string htmlName,string htmlNote)
{
#지역
if (fileAbsolutePath != null && fileAbsolutePath != "" && fileAbsolutePath.Length > 0 && htmlName != null && htmlName != "" && htmlName.Length > 0)
{
노력하다
{
(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.닫기();
fs.닫기();
return 1;//파일이 성공적으로 생성되었습니다.
}
}
잡기 (예외예외)
{
0을 반환합니다.
}
}
return 0;//파일 생성 실패
#endregion
}
/// <요약>
/// 읽은 모든 내용에 따라 페이지를 읽고, 각 페이지를 "|"로 구분합니다.
/// </summary>
/// <param name="contentText">콘텐츠</param>
/// <param name="pageLogo">페이징 로고</param>
/// <returns>콘텐츠 페이지가 매겨진 후의 문자열, 각 페이지는 "|"로 구분됩니다.</returns>
공개 문자열 Html_BackPageData(문자열 contentText,문자열 pageLogo)
{
#지역
int tempcount = 0;
StringBuilder sb = new StringBuilder();
동안(tempcount >= 0)
{
int index = contentText.IndexOf(pageLogo);//페이징 로고
if (index == -1)//페이징이 없는 경우
{
sb.Append(contentText);
부서지다;
}
또 다른
{
sb.Append(contentText.Substring(0,index)+"|");
int start = index + pageLogo.Length + 1;
int end = contentText.Length-index-pageLogo.Length - 1;
contentText=contentText.Substring(시작, 끝);
}
임시 개수++;
}
sb.ToString()을 반환합니다.
#endregion
}
/// <요약>
/// 콘텐츠, 홈 페이지, 이전 페이지, 페이지 번호, 다음 페이지, 마지막 페이지(콘텐츠의 경우)에 해당하는 페이징 플래그를 생성합니다.
/// </summary>
/// <param name="currPageIndex">현재 페이지 인덱스</param>
/// <param name="pageCount">총 페이지 수</param>
/// <param name="noteName">파일 이름(접미사 없이 파일 이름만)</param>
/// <returns>콘텐츠를 기반으로 생성된 해당 페이징 플래그</returns>
공개 문자열 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;
//첫 번째 페이지인 경우
만약(i==1)
{
seprTempStr += "<a href='" + noteName + ".html'>" + i+" "+ "</a>";
}
또 다른
{
seprTempStr += "<a href='" + noteName +"-"+n+ ".html'>" + i+" " + "</a>";
}
}
allSeprNote = allSeprNote.Replace("$pagenumber$", seprTempStr);//페이지 번호 바꾸기
//홈페이지와 이전페이지 생성
if (currPageIndex == 0)//현재 페이지가 첫 번째 페이지이면 이전 페이지나 홈 페이지로의 링크가 없습니다.
{
allSeprNote = allSeprNote.Replace("$firstpage$", "Homepage");//홈페이지 교체
allSeprNote = allSeprNote.Replace("$uppage$", "이전 페이지");//이전 페이지 바꾸기
}
else if (currPageIndex == 1)//현재 페이지가 두 번째 페이지인 경우 이전 페이지와 홈 페이지로의 링크가 있고, 이전 페이지와 홈 페이지로의 링크는 동일합니다. 기능은 동일합니다
{
allSeprNote = allSeprNote.Replace("$firstpage$", "<a href='" + noteName + ".html'>홈페이지</a>");//홈페이지를 링크로 교체
allSeprNote = allSeprNote.Replace("$uppage$", "<a href='" + noteName + ".html'>이전 페이지</a>");//두 번째 페이지이므로 이전 페이지를 바꿉니다. 링크 홈페이지랑 똑같네요
}
else//다른 페이지라면
{
int temppageindex = currPageIndex - 1; //이전 페이지 번호
allSeprNote = allSeprNote.Replace("$firstpage$", "<a href='" + noteName + ".html'>홈페이지</a>");//홈페이지 바꾸기
allSeprNote = allSeprNote.Replace("$uppage$", "<a href='" + noteName +"-"+temppageindex+ ".html'>이전 페이지</a>");//이전 페이지 바꾸기
}
//마지막 페이지와 다음 페이지 생성
if (currPageIndex == pageCount - 1)//현재 페이지가 마지막 페이지이면 다음 페이지와 마지막 페이지는 동일한 기능을 가지며 링크가 없습니다.
{
allSeprNote = allSeprNote.Replace("$lastpage$", "마지막 페이지");//마지막 페이지 바꾸기
allSeprNote = allSeprNote.Replace("$drownpage$", "다음 페이지");//다음 페이지 바꾸기
}
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>");
}
allSeprNote를 반환합니다.
#endregion
}
/// <요약>
/// 목록 페이지에 대한 페이징 플래그 생성
/// </summary>
/// <param name="pageTotal">총 페이지 수</param>
/// <param name="currentPage">현재 페이지 인덱스(0부터 시작)</param>
/// <param name="pageSize">각 페이지에 표시되는 콘텐츠 항목 수</param>
/// <param name="name">파일 이름(접미사 없음)</param>
/// <returns>페이징 플래그</returns>
공개 문자열 Html_Pager_Multi(int pageTotal, int currentPage, int pageSize, 문자열 이름, 문자열 경로)
{
#지역
pageTotal = 페이지 총계 - 1;
StringBuilder sb = new StringBuilder();
//홈페이지 및 이전 페이지 링크 생성
if (currentPage == 0)//현재 페이지가 첫 번째 페이지인 경우
{
sb.Append(" 홈페이지 이전 페이지 ");
}
else if (currentPage == 1)//현재 페이지가 두 번째 페이지인 경우
{
sb.Append(" <a href='" + 이름 + ".html" + "'>홈페이지</a>");
sb.Append(" <a href='" + 이름 + ".html" + "'>이전 페이지</a> ");
}
또 다른
{
sb.Append(" <a href='" + 이름 + ".html" + "'>홈페이지</a>");
sb.Append(" <a href='" + 이름 + "-" + (currentPage - 1) + ".html'>이전 페이지</a> ");
}
int indexStart = currentPage - 5;
int indexEnd = currentPage + 5;
if (indexStart <= 0)
{
indexStart = 0;
indexEnd = 10;
}
if (indexStart > 0)
{
indexStart = currentPage - 5;
indexEnd = 현재페이지 + 5;
}
if (현재페이지 >= pageTotal-10)
{
indexStart = pageTotal - 10;
indexEnd = 페이지 총계;
}
//상세 페이지 번호 생성
for (int i = indexStart; i <= indexEnd; i++)
{
if (i == 현재페이지)
{
sb.Append(" " + (i+1) + " ");
}
else if (i == 0)//현재 페이지가 두 번째 페이지인 경우 별도로 처리해야 합니다.
{
sb.Append(" <a href='" + 이름 + ".html'>" + (i + 1) + "</a> ");
}
또 다른
{
sb.Append(" <a href='" + 이름 + "-" + 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(" " + (현재페이지 + 1) + "/" + (pageTotal + 1));
sb.Append(" 이동:<select name="qq" id="ddlIndexList" onchange="javascript:location.href=this.value;">" );
문자열 절대 경로 = HttpContext.Current.Request.Url.ToString();//URL 가져오기
절대 경로 = 절대 경로.하위 문자열(0, 절대 경로.LastIndexOf("/"))+"\" + 경로;//웹 사이트 루트 경로 URL 가져오기
for (int j = 1; j <= (pageTotal+1); j++)
{
if(j==1)
{
sb.Append("<옵션 값='" + 절대 경로+" \"+name + ".html'>" + j + "</option>");
}
또 다른
{
sb.Append("<옵션 값='" + 절대 경로+" \"+이름 + "-" + (j - 1) + ".html'>" + j + "</option>");
}
}
sb.Append("</select>");
sb.Append("<script type="text/javascript" 언어="javascript">");
if (currentPage == 0)//첫 번째 페이지
{
string d = "document.getElementById("ddlIndexList").value = "" + 이름 + ".html";";
sb.Append("document.getElementById("ddlIndexList").value = ""+name+".html";");
}
또 다른
{
string k = " document.getElementById("ddlIndexList").value = "" + 이름 + "-" + currentPage + ".html";";
sb.Append(" document.getElementById("ddlIndexList").value = "" + name+"-"+currentPage + ".html";");
}
sb.Append("</script>");
sb.ToString()을 반환합니다.
#endregion