-
Recientemente quise hacer que el sitio web fuera estático, así que escribí algunos métodos yo mismo y los publiqué para discutirlos con todos.
/// <resumen>
/// Clase de función estática del sitio web
/// </summary>
clase pública CreateHtml
{
/// <resumen>
/// Leer el contenido de la plantilla
/// </summary>
/// <param name="template">Ruta relativa de la plantilla</param>
/// <returns>Contenido de la plantilla, el error de lectura devuelve ""</returns>
cadena pública Html_ReadTemplate (plantilla de cadena)
{
#región
StringBuilder str = new StringBuilder();//Contenido del patrón de almacenamiento
if (plantilla! = nulo && plantilla! = "" && plantilla.Longitud > 0)//si
{
intentar
{
usando (StreamReader sr = new StreamReader(System.Web.HttpContext.Current.Server.MapPath(plantilla), Encoding.GetEncoding("utf-8")))
{
cadena tempStr;
while ((tempStr = sr.ReadLine()) != null)//Si no se lee el final del archivo
{
str.Append(tempStr);
}
sr.Cerrar();
}
}
captura (Excepción ex)
{
devolver nulo;
}
}
devolver str.ToString();
#regiónfinal
}
/// <resumen>
/// Genera archivos según la ruta absoluta y el nombre del archivo generado
/// </summary>
/// <param name="fileAbsolutePath">Ruta absoluta del archivo</param>
/// <param name="htmlName">Generar nombre de archivo</param>
/// <param name="htmlNote">Escribir contenido del archivo</param>
/// <returns>Generar estado del archivo, 1: éxito 0: fracaso</returns>
public int Html_WriteTemplate (cadena fileAbsolutePath, cadena htmlName, cadena htmlNote)
{
#región
if (fileAbsolutePath!= null && fileAbsolutePath!= "" && fileAbsolutePath.Length > 0 && htmlName!= null && htmlName!= "" && htmlName.Length > 0)
{
intentar
{
usando (FileStream fs = new FileStream(fileAbsolutePath + "\" + htmlName, FileMode.Create, FileAccess.Write, FileShare.Write))
{
StreamWriter sw = nuevo StreamWriter(fs, System.Text.Encoding.GetEncoding("utf-8"));
sw.Write(htmlNota);
sw.Cerrar();
fs.Cerrar();
return 1;//Archivo generado exitosamente
}
}
captura (Excepción ex)
{
devolver 0;
}
}
return 0;//Error en la generación del archivo
#regiónfinal
}
/// <resumen>
/// Lee las páginas de acuerdo con todo el contenido leído y separa cada página con "|"
/// </summary>
/// <param nombre="contentText">Contenido</param>
/// <param name="pageLogo">Logotipo de paginación</param>
/// <returns>La cadena después de que se pagina el contenido, cada página está separada por "|"</returns>
cadena pública Html_BackPageData (cadena texto de contenido, cadena logotipo de página)
{
#región
int cuentatemperatura = 0;
StringBuilder sb = nuevo StringBuilder();
mientras (recuento temporal >= 0)
{
int index = contentText.IndexOf(pageLogo);//Logotipo de paginación
if (index == -1)//Si no hay paginación
{
sb.Append(contentText);
romper;
}
demás
{
sb.Append(contentText.Substring(0,index)+"|");
int inicio = índice + pageLogo.Length + 1;
int end = contentText.Length-index-pageLogo.Length - 1;
contentText=contentText.Substring(inicio, fin);
}
recuento temporal++;
}
devolver sb.ToString();
#regiónfinal
}
/// <resumen>
/// Generar indicadores de paginación correspondientes para el contenido, página de inicio, página anterior, número de página, página siguiente, última página (para un contenido)
/// </summary>
/// <param name="currPageIndex">Índice de página actual</param>
/// <param name="pageCount">Número total de páginas</param>
/// <param name="noteName">Nombre del archivo (solo el nombre del archivo sin el sufijo)</param>
/// <returns>El indicador de paginación correspondiente generado en función del contenido</returns>
cadena pública Html_Pager_Sign (int currPageIndex, int pageCount, cadena noteName)
{
#región
string allSeprNote = "<table><tr><td> $primerapágina$</td><td> $uppage$</td><td> $númerodepágina$</ td><td> $drownpage$</td><td> $lastpage$</td></tr></table>";
cadena seprTempStr = "";
for (int i = 1; i <= pageCount; i++)//Bucle para generar números de página para cada página (este bucle solo genera números de página)
{
int norte = yo - 1;
//Si es la primera página
si(yo==1)
{
seprTempStr += "<a href='" + noteName + ".html'>" + i+" "+ "</a>";
}
demás
{
seprTempStr += "<a href='" + noteName +"-"+n+ ".html'>" + i+" " + "</a>";
}
}
allSeprNote = allSeprNote.Replace("$pagenumber$", seprTempStr);//Reemplazar el número de página
//Generar página de inicio y página anterior
if (currPageIndex == 0) // Si la página actual es la primera página, no habrá ningún enlace a la página anterior ni a la página de inicio.
{
allSeprNote = allSeprNote.Replace("$firstpage$", "Homepage");//Reemplazar la página de inicio
allSeprNote = allSeprNote.Replace("$uppage$", "página anterior");//Reemplazar la página anterior
}
else if (currPageIndex == 1) // Si la página actual es la segunda página, hay enlaces a la página anterior y a la página de inicio, y los enlaces a la página anterior y a la página de inicio son los mismos, es decir, el las funciones son las mismas
{
allSeprNote = allSeprNote.Replace("$firstpage$", "<a href='" + noteName + ".html'>Homepage</a>");//Reemplazar la página de inicio con enlaces
allSeprNote = allSeprNote.Replace("$uppage$", "<a href='" + noteName + ".html'>Página anterior</a>");//Reemplazar la página anterior porque es la segunda página El enlace es lo mismo que la pagina de inicio
}
else//si es otra página
{
int temppageindex = currPageIndex - 1 //Número de página anterior
allSeprNote = allSeprNote.Replace("$firstpage$", "<a href='" + noteName + ".html'>Homepage</a>");//Reemplazar la página de inicio
allSeprNote = allSeprNote.Replace("$uppage$", "<a href='" + noteName +"-"+temppageindex+ ".html'>Página anterior</a>");//Reemplazar la página anterior
}
//Generar la última página y la página siguiente
if (currPageIndex == pageCount - 1) // Si la página actual es la última página, la página siguiente y la última página tienen las mismas funciones y no tienen enlaces.
{
allSeprNote = allSeprNote.Replace("$lastpage$", "última página");//Reemplazar la última página
allSeprNote = allSeprNote.Replace("$drownpage$", "página siguiente");//Reemplazar la página siguiente
}
else//si es otra página
{
int temppageindex = currPageIndex+1;//número de página siguiente
allSeprNote=allSeprNote.Replace("$lastpage$", "<a href='" + noteName + "-" + (pageCount - 1) + ".html'>Última página</a>");//Generar cola Página
allSeprNote=allSeprNote.Replace("$drownpage$", "<a href='" + noteName + "-" + temppageindex + ".html'>Página siguiente</a>");
}
devolver todas las notas de septiembre;
#regiónfinal
}
/// <resumen>
/// Generar indicadores de paginación para páginas de lista
/// </summary>
/// <param name="pageTotal">Número total de páginas</param>
/// <param name="currentPage">Índice de página actual (comenzando desde cero)</param>
/// <param name="pageSize">Número de elementos de contenido mostrados en cada página</param>
/// <param name="name">Nombre de archivo (sin sufijo)</param>
/// <returns>Indicador de paginación</returns>
cadena pública Html_Pager_Multi (int pageTotal, int currentPage, int pageSize, nombre de cadena, ruta de cadena)
{
#región
total de páginas = total de páginas - 1;
StringBuilder sb = nuevo StringBuilder();
//Generar enlaces a la página de inicio y a la página anterior
if (currentPage == 0)//Si la página actual es la primera página
{
sb.Append(" Página de inicio Página anterior ");
}
else if (currentPage == 1)//Si la página actual es la segunda página
{
sb.Append(" <a href='" + nombre + ".html" + "'>Página de inicio</a>");
sb.Append(" <a href='" + nombre + ".html" + "'>Página anterior</a> ");
}
demás
{
sb.Append(" <a href='" + nombre + ".html" + "'>Página de inicio</a>");
sb.Append(" <a href='" + nombre + "-" + (página actual - 1) + ".html'>Página anterior</a> ");
}
int indexStart = páginaactual - 5;
int indexEnd = páginaactual + 5;
si (índice de inicio <= 0)
{
índiceInicio = 0;
Fin del índice = 10;
}
si (inicioinicio > 0)
{
indexStart = página actual - 5;
fin del índice = página actual + 5;
}
si (Página actual >= páginaTotal-10)
{
indexStart = páginaTotal - 10;
finíndice = totalpágina;
}
//Generar números de página detallados
para (int i = indexStart; i <= indexEnd; i++)
{
si (i == página actual)
{
sb.Append(" " + (i+1) + " ");
}
else if (i == 0) // Si la página actual es la segunda página, debe procesarse por separado
{
sb.Append(" <a href='" + nombre + ".html'>" + (i + 1) + "</a> ");
}
demás
{
sb.Append(" <a href='" + nombre + "-" + i + ".html'>" + (i + 1) + "</a> ");
}
}
//Generar página siguiente y última página
if (currentPage == pageTotal)//Si la página actual es la última página
{
sb.Append(" Página siguiente ");
sb.Append(" Última página ");
}
demás
{
sb.Append(" <a href='"+name+"-"+(currentPage+1)+".html'>Página siguiente</a> ");
sb.Append(" <a href='"+name+"-"+pageTotal+".html'>Última página</a>");
}
sb.Append(" " + (PáginaActual + 1) + "/" + (TotalPágina + 1));
sb.Append(" Ir a:<select name="qq" id="ddlIndexList" onchange="javascript:location.href=this.value;">" );
cadena absolutaPaths = HttpContext.Current.Request.Url.ToString();//Obtener URL
absolutPaths = absolutPaths.Substring(0, absolutPaths.LastIndexOf("/"))+"\" + ruta;//Obtener la URL de la ruta raíz del sitio web
para (int j = 1; j <= (páginaTotal+1); j++)
{
si(j==1)
{
sb.Append("<valor de opción='" + rutas absolutas+" \"+nombre + ".html'>" + j + "</option>");
}
demás
{
sb.Append("<valor de opción='" + rutas absolutas+" \"+nombre + "-" + (j - 1) + ".html'>" + j + "</option>");
}
}
sb.Append("</select>");
sb.Append("<tipo de script="texto/javascript" idioma="javascript">");
if (currentPage == 0)//Primera página
{
string d = "document.getElementById("ddlIndexList").value = "" + nombre + ".html";";
sb.Append("document.getElementById("ddlIndexList").value = ""+nombre+".html";");
}
demás
{
string k = " document.getElementById("ddlIndexList").value = "" + nombre + "-" + currentPage + ".html";";
sb.Append(" document.getElementById("ddlIndexList").value = "" + nombre+"-"+currentPage + ".html";");
}
sb.Append("</script>");
devolver sb.ToString();
#regiónfinal