asp.net新闻列表生成静态页之批量和单页生成

web程序的高访问量、大数据量、高效的用户体验度,使静态页技术在越来越多的网站上发挥作用。这篇文章主要介绍asp.net新闻列表生成静态页之批量和单页生成,有需要的朋友可以参考下

大家都知道,生成静态页的方法有两种,第一种是使用C#在后台硬编码,第二种是读取模板文件,使用字符串代替。总体来讲第一种方法代码量比较大,维护起来有点困难。生成静态页的目的是为了提高用户体验度,加快访问速度。

使用静态页面还有如下好处:
1、 安全:使用静态页面,用户访问的使没有任何操作功能的html页面,可以说从安全性方面大大提高了程序及服务器的安全。

2、 快速:用户访问的是提前生成好的静态页面,使用户对页面的请求瓶颈只受IO的限制而不会有其他方面的影响。

3、 降低服务器,数据库负载:因为用户访问的是静态页,对承载静态页的服务器配置要求降低了许多,同时,不会因为过大的访问量,造成数据库服务器负载过重等问题。

下面分享asp.net新闻列表生成静态页之批量和单页生成。前期准备,需要新建一个文件夹。。前台展示:/new/default.aspx  这个页面放的就是动态的新闻列表数据。

先看下图:

 

不多说了上代码

这里要说明一下,我用的AspNetPager分页控件,需要设置一下

  

需要设置三个地方:

UrlPaging="true" 设置启用url来传递分页信息  EnableUrlRewriting="True" 启用URL重写   UrlRewritePattern="news_{0}.html" 设置分页URL重写格式

Static.ashx页面代码

 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Text; using System.IO; using System.Net; using System.Data; namespace Web.admin.ashx { ///  /// Static 生成静态页 ///  public class Static : IHttpHandler { public void ProcessRequest(HttpContext context) { string url = context.Request["geturl"]; string path = context.Request["getpath"]; string id = context.Request["id"]; string act = context.Request["act"]; string page = context.Request["pages"]; string pagecount = context.Request["pagecouts"]; string table = context.Request["table"]; string str = ""; if (act == "0") { //生成当前选中项 string ids = id.Substring(0, (id.Length - 1)); string[] s_id = ids.Split(','); for (int i = 0; i  0) { } } context.Response.Write(str); context.Response.End(); } if (act == "1") { //生成当前页列表 string path2 = context.Server.MapPath("../../" + path + page + ".html"); str = CreateHTML("http://localhost:4216/" + url + page, path2); context.Response.Write(str); context.Response.End(); } if (act == "2") { //生成全部列表 int count = Convert.ToInt32(pagecount); for (int i = 1; i <= count; i++) { string path2 = context.Server.MapPath("../../" + path + i + ".html"); str = CreateHTML("http://localhost:4216/" + url + i, path2); } context.Response.Write(str); context.Response.End(); } if (act == "3") { //生成全部项 string sqlsel =string.Format("select Id from {0}",table); DataTable dt = new DBTool.DB().RunSqlGetDataTable(sqlsel); if (dt.Rows.Count > 0) { string idall = ""; for (int i = 0; i  0) { } } context.Response.Write(str); context.Response.End(); } } } public string CreateHTML(string strurl, string path) { string str = ""; StreamReader sr; StreamWriter sw = null; try { WebRequest HttpWebRequest = WebRequest.Create(strurl); WebResponse HttpWebResponse = HttpWebRequest.GetResponse(); sr = new StreamReader(HttpWebResponse.GetResponseStream(), System.Text.Encoding.GetEncoding("utf-8")); string strHtml = sr.ReadToEnd(); sw = new StreamWriter(path, false, System.Text.Encoding.GetEncoding("utf-8")); sw.WriteLine(strHtml); sw.Flush(); sw.Close(); str = "生成成功!"; } catch (Exception ex) { str = "生成失败,失败原因" + ex.Message+"。"; } return str; } public bool IsReusable { get { return false; } } } } 

后台生成前台代码

  

 
查看全部
 ID名称地址静态化操作
<%#Eval("id") %> <%#Eval("Name") %> <%#Eval("Dir") %> " class="a_2" target="_blank">查看<%--data-table data-fild 为复制数据的表明和字段--%>" class="more" data-table="users" data-fild="Name,PassWord" data-url="list.aspx" data-itemid="<%# Container.ItemIndex + 1%>">更多操作
很抱歉,暂无数据。

生成静态列表:

生成静态页:

 <%-- --%> 

cs代码

我用的是存储过程加载数据,存储过程具体使用方法请看另一篇文章https://www.0133.cn/article/42950.htm

 using System; using System.Web; using System.Data.SqlClient; using System.Data; using System.Collections.Generic; using System.Web.Script.Serialization; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Text; using System.IO; using System.Net; namespace Web.admin { public partial class newslist : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { HttpCookie hcname = Request.Cookies["backname"]; if (hcname != null) { string s = Request.Url.ToString().Substring(Request.Url.ToString().LastIndexOf('/') + 1); if (s.IndexOf("?") > -1) s = s.Substring(0, s.IndexOf("?")); HttpCookie hc1 = new HttpCookie("backUrl", s); hc1.Expires = DateTime.Now.AddMinutes(120); Response.Cookies.Add(hc1); string title = this.Page.Title.ToString(); HttpCookie hc2 = new HttpCookie("backTitle", Server.UrlEncode(title)); hc2.Expires = DateTime.Now.AddMinutes(120); Response.Cookies.Add(hc2); Bind(); } else { this.Page.RegisterStartupScript("aaa", ""); } } } public void Bind() { SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@FEILDS",SqlDbType.NVarChar,1000), new SqlParameter("@PAGE_INDEX",SqlDbType.Int,10), new SqlParameter("@PAGE_SIZE",SqlDbType.Int,10), new SqlParameter("@ORDERTYPE",SqlDbType.Int,2), new SqlParameter("@ANDWHERE",SqlDbType.VarChar,1000), new SqlParameter("@ORDERFEILD",SqlDbType.VarChar,100), new SqlParameter("@TABLENAME",SqlDbType.VarChar,100) }; parms[0].Value = "id,Name,Dir,Static,Url";//获取所有的字段 parms[1].Value = page();//当前页面索引 parms[2].Value = 10;//页面大小 parms[3].Value = paixu();//升序排列 parms[4].Value = "(Name like '%" + keyword() + "%')";//条件语句 parms[5].Value = paixuziduan();//排序字段 parms[6].Value = "HotelInfo";//表名 DataTable dt = new DataTable(); using (SqlDataReader sdr = Yoodor.DAL.SqlHelper.ExecuteReader(CommandType.StoredProcedure, "PAGINATION", parms)) { dt.Load(sdr); R1.DataSource = dt; R1.DataBind(); } if (keyword() != null && keyword() != "none") { text_word.Value = keyword(); } } public int page() { int PageNumber = Request.QueryString["page"] != null ? Convert.ToInt32(Request.QueryString["page"].ToString()) : 1; return PageNumber; } public string keyword() { string key = Request.QueryString["keyword"] != null ? Request.QueryString["keyword"].ToString() : ""; return key; } public string type() { string key = Request.QueryString["type"] != null ? Request.QueryString["type"].ToString() : ""; return key; } public string paixuziduan() { string str = ""; string s = Request.QueryString["field"]; if (s != null) { str = s; } else { str = "Id"; } return str; } public int paixu() { string asc = Request.QueryString["asc"]; if (asc != null) { if (asc == "desc") { return 0; } else { return 1; } } else { return 1; } } //分页事件 protected void AspNetPager1_PageChanged1(object sender, EventArgs e) { Bind(); } protected void AspNetPager1_Load(object sender, EventArgs e) { string count = new BLL.f_article().SelectAllNum(keyword(), type()); AspNetPager1.RecordCount = Convert.ToInt32(count); lab_num.Text = "共" + count + "条记录。"; text_pagecount.Value = AspNetPager1.PageCount.ToString(); } protected void R1_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { CheckBox ch = (CheckBox)e.Item.FindControl("chkItem"); HtmlInputHidden tid = (HtmlInputHidden)e.Item.FindControl("text_id"); ch.Attributes.Add("onclick", "checks(" + tid.Value + ")"); Label state = (Label)e.Item.FindControl("lab_state"); if (state.Text == "0") { state.Text = "未静态"; state.ForeColor = System.Drawing.Color.Red; } else { state.Text = "已静态"; } } } //搜索 protected void Button1_Click(object sender, EventArgs e) { string keyword = text_word.Value.Trim(); Response.Redirect("list.aspx?keyword=" + keyword, false); } } }

glob.js代码

 $(function () { //创建弹出提示框 var divdialog = '
'; $(document.body).append(divdialog); //表格行,鼠标放上去变色 $(".tr:odd").css("background", "#FFFCEA"); $(".tr:odd").each(function () { $(this).hover(function () { $(this).css("background-color", "#F5F8F9"); }, function () { $(this).css("background-color", "#FFFCEA"); }); }); $(".tr:even").each(function () { $(this).hover(function () { $(this).css("background-color", "#F5F8F9"); }, function () { $(this).css("background-color", "#fff"); }); }); //生成静态页 $(".Static").click(function () { var url = $(this).attr("data-url"); var path = $(this).attr("data-path"); var href = $(this).attr("data-href"); var tablename = $(this).attr("data-table"); var actid = $(this).attr("data-act"); //0 表示生成当前选中项 var ids = $("#text_delid").val(); var page = $("#text_page").val(); var pagecount = $("#text_pagecount").val(); if (actid == 0) { if (ids == "") { dialog(1, '请先选择!'); return false; } } $.ajax({ url: "ashx/Static.ashx", data: { "geturl": url, "getpath": path, "act": actid, "id": ids, "pages": page, "pagecouts": pagecount, "table": tablename }, type: "post", beforeSend: function (data) { doProgress(href, "生成成功!"); }, success: function (data) { doProgress(href, data); } }) }) }); var progress_id = "loading"; function SetProgress(progress) { if (progress) { $("#" + progress_id + " > div").css({ "width": String(progress) + "%", "background": "#F4A830" }); //控制#loading div宽度 $("#" + progress_id + " > div").html(String(progress) + "%"); //显示百分比 } } var i = 0; function doProgress(href, msg) { $("#loading").show(); if (i > 100) { $("#message").html(msg).fadeIn("fast");//加载完毕提示 // window.location.href = href; $("#loading").hide(); dialog(0, msg, href, 1000); return; } if (i <= 100) { setTimeout("doProgress('"+href+"','"+msg+"')", 1); SetProgress(i); i++; } } function checks(id) { var spid = ""; spid += id + ","; var aa = $("#text_delid").val(); if ($("#labe_" + id + " input").attr("checked")) { // $("#tr_" + id).css("background","#000"); $("#text_delid").val(aa + spid); return false; } else { //$("#tr_" + id).removeClass("hover1"); if (aa.indexOf(id) > -1) { var b = aa.replace(id + ",", ""); $("#text_delid").val(b); } } } //删除确认框 function dels(tablename,url) { var id = $("#text_delid").val(); if (id == "") { dialog(1, '请先选择!'); return false;} else {$("#divdialog").hide(); suredialog(id, "您确定要删除吗?删除之后信息将不再显示!",tablename,url); return false;}} function newdels() { var tablename = $("#text_table").val(); var url = "type.aspx?table=" + tablename; var id = $("#text_delid").val(); if (id == "") { dialog(1, '请先选择!'); return false; } else { $("#divdialog").hide(); suredialog(id, "您确定要删除吗?删除之后信息将不再显示!", tablename, url); return false; } } //全选反选 function QuanXuan() { $(':checkbox').each(function () { $(this).attr("checked", true); var spid = ""; var id = $(this).parent('span').attr("title"); spid += id + ","; var aa = $("#text_delid").val(); $("#text_delid").val(aa + spid); })} function FanXuan() { $(':checkbox').each(function () { $(this).attr("checked", false); $("#text_delid").val(''); })} //删除信息 function deleteinfor(ids, table,url) { $("#divsuredialog").hide(); var page = $('#text_page').val(); $.post("ashx/delete.ashx?id=" + ids + "&table=" + table + "", null, function (data) { if (data == 1) { if (url.indexOf("type.aspx") > -1) { dialog(0, '删除成功', url, 1000); } else { dialog(0, '删除成功', url + '?page=' + page + '', 1000); } } else { dialog(2, '删除失败', url + '?page=' + page + '', 1000);} }); } var dlog; var pp = false; KindEditor.ready(function (K) { K('.a_1').click(function () { $("#divsuredialog").hide(); $("#divdialog").hide(); var id = $(this).attr("data-id"); var value1 = $(this).attr("data-value"); var value = ""; var html = ""; if ($(this).html().indexOf('通过')>-1) { value = value1; html="修改审核状态(点击确定即可)" } else { value = $(this).html(); html = "修改信息"; } var field = $(this).attr("data-field"); var table = $(this).attr("data-table"); var url = $(this).attr("data-url"); dlog = K.dialog({ width: 260, title: html, body: "
     
", closeBtn: { name: '关闭', click: function (e) { dlog.remove(); } } }); }); K('#newsadd').click(function () { $("#divsuredialog").hide(); $("#divdialog").hide(); dlog = K.dialog({ width: 260, title: '新增分类', body: "
     
", closeBtn: { name: '关闭', click: function (e) { dlog.remove(); } } }); }); }); //修改信息 function upateinfor(ids, fieldname, tablename, url) { var page = $('#text_page').val(); var value = $("#text_updatevalue").val(); $.post("ashx/update.ashx?id=" + ids + "&table=" + tablename + "&field=" + fieldname + "&value=" + escape(value) + "", null, function (data) { if (data == 1) { closedlog(); if (url.indexOf("type.aspx") > -1) { dialog(0, '修改成功', url, 1000); } else { dialog(0, '修改成功', url + '?page=' + page + '', 1000); } } else { closedlog(); dialog(2, '修改失败', url+'?page=' + page + '', 1000); } }); } //修改信息 带值 function upateinforss(ids, value, fieldname, tablename, url) { var page = $('#text_page').val(); $.post("ashx/update.ashx?id=" + ids + "&table=" + tablename + "&field=" + fieldname + "&value=" + escape(value) + "", null, function (data) { if (data == 1) { $("#div_tip").hide(); if (url.indexOf("type.aspx") > -1) { dialog(0, '修改成功', url , 1000); } else { dialog(0, '修改成功', url + '?page=' + page + '', 1000); } } else { closedlog(); dialog(2, '修改失败', url + '?page=' + page + '', 1000); } }); } //增加分类 function inserttype(){ var value = $("#text_typevalue").val(); var table = $("#text_table").val(); var url = "type.aspx?table="+table; var page = $('#text_page').val(); $.post("ashx/insert.ashx?table="+table+"&value=" + escape(value) + "", null, function (data) { if (data == 1) { closedlog(); dialog(0, '添加成功', url, 1000); } else { closedlog(); dialog(2, '添加失败', url , 1000); } }); } function closedlog() { dlog.remove(); } //弹出删除 确认对话框 function suredialog(id, msg, tablename,url) { var html = "
系统提示
   
"; $("#divsuredialog").show(); $("#divsuredialog").html(html); $(".sure_content").html(msg); }

以上内容是asp.net新闻列表生成静态页之批量和单页生成的全部内容,还有生成文章静态页,在这里我要提醒大家生成文章的静态页的方法给这个是不一样的,请继续关注本网站,我会持续更新的。谢谢大家阅读我的作品。

 

以上就是asp.net新闻列表生成静态页之批量和单页生成的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 其他教程