-
Recentemente, quis tornar o site estático, então escrevi alguns métodos e os publiquei para discussão com todos.
/// <resumo>
/// Classe de função estática do site
/// </sumário>
classe pública CreateHtml
{
/// <resumo>
/// Ler o conteúdo do modelo
/// </sumário>
/// <param name="template">Caminho relativo do modelo</param>
/// <returns>Conteúdo do modelo, falha de leitura retorna ""</returns>
string pública Html_ReadTemplate (modelo de string)
{
#região
StringBuilder str = new StringBuilder();//Conteúdo do padrão de armazenamento
if (template! = null && template! = "" && template.Length > 0)//if
{
tentar
{
usando (StreamReader sr = new StreamReader(System.Web.HttpContext.Current.Server.MapPath(template), Encoding.GetEncoding("utf-8")))
{
string tempStr;
while ((tempStr = sr.ReadLine()) != null)//Se o final do arquivo não for lido
{
str.Append(tempStr);
}
sr.Fechar();
}
}
pegar (exceção ex)
{
retornar nulo;
}
}
retornar str.ToString();
#endregion
}
/// <resumo>
/// Gera arquivos com base no caminho absoluto e no nome do arquivo gerado
/// </sumário>
/// <param name="fileAbsolutePath">Caminho absoluto do arquivo</param>
/// <param name="htmlName">Gerar nome do arquivo</param>
/// <param name="htmlNote">Escrever o conteúdo do arquivo</param>
/// <returns>Gerar status do arquivo, 1: sucesso 0: falha</returns>
public int Html_WriteTemplate(string fileAbsolutePath, string htmlName,string htmlNote)
{
#região
if (fileAbsolutePath != null && fileAbsolutePath != "" && fileAbsolutePath.Length > 0 && htmlName != null && htmlName != "" && htmlName.Length > 0)
{
tentar
{
usando (FileStream fs = new FileStream(fileAbsolutePath + "\" + htmlName, FileMode.Create, FileAccess.Write, FileShare.Write))
{
StreamWriter sw = novo StreamWriter(fs, System.Text.Encoding.GetEncoding("utf-8"));
sw.Write(htmlNota);
sw.Fechar();
fs.Fechar();
return 1; //Arquivo gerado com sucesso
}
}
pegar (exceção ex)
{
retornar 0;
}
}
return 0; //Falha na geração do arquivo
#endregion
}
/// <resumo>
/// Ler as páginas de acordo com todo o conteúdo lido, e separar cada página com "|"
/// </sumário>
/// <param name="contentText">Conteúdo</param>
/// <param name="pageLogo">Logotipo de paginação</param>
/// <returns>A string após o conteúdo ser paginado, cada página é separada por "|"</returns>
string pública Html_BackPageData(string contentText,string pageLogo)
{
#região
int contagem temporária = 0;
StringBuilder sb = new StringBuilder();
enquanto (contagem de temperatura >= 0)
{
int index = contentText.IndexOf(pageLogo); // Logotipo da paginação
if (index == -1)//Se não houver paginação
{
sb.Append(contentText);
quebrar;
}
outro
{
sb.Append(contentText.Substring(0,index)+"|");
int início = índice + pageLogo.Length + 1;
int end = contentText.Length-index-pageLogo.Length - 1;
contentText=contentText.Substring(início, fim);
}
contagem temporária++;
}
return sb.ToString();
#endregion
}
/// <resumo>
/// Gera sinalizadores de paginação correspondentes para o conteúdo, página inicial, página anterior, número da página, próxima página, última página (para uma parte do conteúdo)
/// </sumário>
/// <param name="currPageIndex">Índice da página atual</param>
/// <param name="pageCount">Número total de páginas</param>
/// <param name="noteName">Nome do arquivo (apenas o nome do arquivo sem o sufixo)</param>
/// <returns>O sinalizador de paginação correspondente gerado com base no conteúdo</returns>
string pública Html_Pager_Sign (int currPageIndex, int pageCount, string noteName)
{
#região
string allSeprNote = "<table><tr><td> $firstpage$</td><td> $uppage$</td><td> $pagenumber$</ td><td>$drownpage$</td><td> $lastpage$</td></tr></table>";
string seprTempStr = "";
for (int i = 1; i <= pageCount; i++)//Loop para gerar números de página para cada página (este loop gera apenas números de página)
{
int n = eu - 1;
//Se for a primeira página
se(eu==1)
{
seprTempStr += "<a href='" + noteName + ".html'>" + i+" "+ "</a>";
}
outro
{
seprTempStr += "<a href='" + noteName +"-"+n+ ".html'>" + i+" ";
}
}
allSeprNote = allSeprNote.Replace("$pagenumber$", seprTempStr);//Substitua o número da página
//Gera a página inicial e a página anterior
if (currPageIndex == 0)//Se a página atual for a primeira página, não haverá link para a página anterior ou página inicial.
{
allSeprNote = allSeprNote.Replace("$firstpage$", "Homepage");//Substitui a página inicial
allSeprNote = allSeprNote.Replace("$uppage$", "página anterior");//Substitui a página anterior
}
else if (currPageIndex == 1)//Se a página atual for a segunda página, existem links para a página anterior e a página inicial, e os links para a página anterior e a página inicial são os mesmos, ou seja, o funções são as mesmas
{
allSeprNote = allSeprNote.Replace("$firstpage$", "<a href='" + noteName + ".html'>Homepage</a>");//Substitua a página inicial por links
allSeprNote = allSeprNote.Replace("$uppage$", "<a href='" + noteName + ".html'>Página anterior</a>");//Substitua a página anterior porque é a segunda página O link é igual à página inicial
}
else //se for outra página
{
int temppageindex = currPageIndex - 1; //Número da página anterior
allSeprNote = allSeprNote.Replace("$firstpage$", "<a href='" + noteName + ".html'>Homepage</a>");//Substitua a página inicial
allSeprNote = allSeprNote.Replace("$uppage$", "<a href='" + noteName +"-"+temppageindex+ ".html'>Página anterior</a>");//Substituir a página anterior
}
//Gera última página e próxima página
if (currPageIndex == pageCount - 1)//Se a página atual for a última página, a próxima página e a última página terão as mesmas funções e não terão links.
{
allSeprNote = allSeprNote.Replace("$lastpage$", "última página");//Substituir a última página
allSeprNote = allSeprNote.Replace("$drownpage$", "próxima página");//Substituir a próxima página
}
else //se for outra página
{
int temppageindex = currPageIndex+1;//próximo número da página
allSeprNote=allSeprNote.Replace("$lastpage$", "<a href='" + noteName + "-" + (pageCount - 1) + ".html'>Última página</a>");//Gerar cauda Página
allSeprNote=allSeprNote.Replace("$drownpage$", "<a href='" + noteName + "-" + temppageindex + ".html'>Próxima página</a>");
}
return allSeprNote;
#endregion
}
/// <resumo>
/// Gera sinalizadores de paginação para páginas de lista
/// </sumário>
/// <param name="pageTotal">Número total de páginas</param>
/// <param name="currentPage">Índice da página atual (começando do zero)</param>
/// <param name="pageSize">Número de itens de conteúdo exibidos em cada página</param>
/// <param name="name">Nome do arquivo (sem sufixo)</param>
/// <returns>Sinalizador de paginação</returns>
string pública Html_Pager_Multi(int pageTotal, int currentPage, int pageSize, nome da string, caminho da string)
{
#região
páginaTotal = páginaTotal - 1;
StringBuilder sb = new StringBuilder();
//Gerar links da página inicial e da página anterior
if (currentPage == 0) //Se a página atual for a primeira página
{
sb.Append("Página inicial");
}
else if (currentPage == 1) //Se a página atual for a segunda página
{
sb.Append(" <a href='" + nome + ".html" + "'>Página inicial</a>");
sb.Append(" <a href='" + name + ".html" + "'>Página anterior</a> ");
}
outro
{
sb.Append(" <a href='" + nome + ".html" + "'>Página inicial</a>");
sb.Append(" <a href='" + name + "-" + (currentPage - 1) + ".html'>Página anterior</a> ");
}
int indexStart = páginaatual - 5;
int indexEnd = páginaatual + 5;
if (indexStart <= 0)
{
indexInício = 0;
indexEnd = 10;
}
if (indexStart > 0)
{
indexStart = páginaatual - 5;
indexEnd = páginaatual + 5;
}
if (página atual >= pageTotal-10)
{
indexStart = páginaTotal - 10;
indexEnd = páginaTotal;
}
//Gera números de páginas detalhados
for (int i = indexStart; i <= indexEnd; i++)
{
if (i == páginaatual)
{
sb.Append(" " + (i+1) + " ");
}
else if (i == 0)//Se a página atual for a segunda página, ela precisa ser processada separadamente
{
sb.Append(" <a href='" + nome + ".html'>" + (i + 1) + "</a> ");
}
outro
{
sb.Append(" <a href='" + nome + "-" + i + ".html'>" + (i + 1) + "</a> ");
}
}
//Gera a próxima página e a última página
if (currentPage == pageTotal) //Se a página atual for a última página
{
sb.Append(" Próxima página ");
sb.Append(" Última página ");
}
outro
{
sb.Append(" <a href='"+name+"-"+(currentPage+1)+".html'>Próxima página</a> ");
sb.Append(" <a href='"+name+"-"+pageTotal+".html'>Última página</a>");
}
sb.Append(" " + (PáginaAtual + 1) + "/" + (PáginaTotal + 1));
sb.Append(" Vá para:<select name="qq" id="ddlIndexList" onchange="javascript:location.href=this.value;">" );
string absolutoPaths = HttpContext.Current.Request.Url.ToString();//Obter url
absolutoPaths = absolutoPaths.Substring(0, absolutoPaths.LastIndexOf("/"))+"\" + path;//Obter o URL do caminho raiz do site
for (int j = 1; j <= (pageTotal+1); j++)
{
se(j==1)
{
sb.Append("<option value='" + absolutoPaths+" \"+nome + ".html'>" + j + "</option>");
}
outro
{
sb.Append("<option value='" + absolutoPaths+" \"+nome + "-" + (j - 1) + ".html'>" + j + "</option>");
}
}
sb.Append("</select>");
sb.Append("<script type="text/javascript" idioma="javascript">");
if (currentPage == 0)//Primeira página
{
string d = "document.getElementById("ddlIndexList").value = "" + nome + ".html";";
sb.Append("document.getElementById("ddlIndexList").value = ""+nome+".html";");
}
outro
{
string k = " document.getElementById("ddlIndexList").value = "" + nome + "-" + currentPage + ".html";";
sb.Append(" document.getElementById("ddlIndexList").value = "" + nome+"-"+currentPage + ".html";");
}
sb.Append("</script>");
return sb.ToString();
#endregion