zoukankan      html  css  js  c++  java
  • asp.net静态生成

    今天看了看asp.net静态生成的视频http://v.youku.com/v_show/id_XMjI3NDk5MzQw.html

      决定自己打出来留着以后用首先、建一个Default.aspx 

    Default.aspx 页面

            <asp:Repeater ID="Repeater1" runat="server">
            <HeaderTemplate><table><tr><td>编号</td><td>名称</td><td></td></tr></HeaderTemplate>
            <ItemTemplate><tr><td><%#Eval("id") %></td><td><%#Eval("name") %></td><td>
                <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%#Eval("id","~/html/{0}.html")%>'>查看详细</asp:HyperLink></td></tr></ItemTemplate>
            <FooterTemplate></table></FooterTemplate>
            </asp:Repeater>
            <asp:Button ID="Button1" runat="server" Text="生成静态页面" onclick="Button1_Click" />

      

    Default.aspx.cs页面

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Data.OleDb;
    using System.IO;                                //File空间引用


    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Bind();
            }
        }
        /// <summary>
        /// 绑定数据库
        /// </summary>
        public void Bind()
        {
            string conn = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + HttpContext.Current.Server.MapPath("~/App_Data/database.mdb");
            OleDbConnection con = new OleDbConnection(conn);

            string str = "select * from news";

            OleDbCommand com = new OleDbCommand(str, con);
            DataSet ds = new DataSet();

            con.Open();
            OleDbDataAdapter da = new OleDbDataAdapter(com);
            da.Fill(ds);
            con.Close();
            //绑定到Repeater上
            Repeater1.DataSource = ds;
            Repeater1.DataBind();
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            //<!--链接字符串
            string conn = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + HttpContext.Current.Server.MapPath("~/App_Data/database.mdb");
            OleDbConnection con = new OleDbConnection(conn);
            string tr = "select * from news";

            OleDbCommand com = new OleDbCommand(tr, con);
            DataSet ds = new DataSet();

            con.Open();
            OleDbDataAdapter da = new OleDbDataAdapter(com);
            da.Fill(ds);
            con.Close();
            //-->

            string path =Server.MapPath("~/html/");                        //带读取html模版的路径
            string temp = File.ReadAllText(path + "HTMLPage.htm",System.Text.Encoding.UTF8);          //读取模版文件所有内容,和编码

            foreach (DataRow dr in ds.Tables[0].Rows)                       //循环读取ds的内容
            {
                string content = temp.Replace("$name$", dr["name"].ToString()); //替换模板页内容  content现在存的是html代码
                content = content.Replace("$time$", dr["time"].ToString());
                content = content.Replace("$body$", dr["body"].ToString());
                File.WriteAllText(path + dr["id"] + ".html", content, System.Text.Encoding.UTF8);   //在制定位置创建文件,内容,编码
            }
        }
    }

    HTMLPage.htm  html模板页

    <html>
    <head runat="server">
        <title>无标题</title>
    </head>
    <body>
    <form>
    <!--这是静态模板-->
    <div>标题:$name$
    <br />
        时间:$time$<br />
        <hr />
        $body$
    </div>
    </form>
    </body>
    </html>

    OK   点击生成静态页面按钮、、就可以看到了、、具体样式 具体添加

    带Repeater   aspx页

     <asp:Repeater ID="Repeater1" runat="server">
            <HeaderTemplate><table><tr><td>编号</td><td>名称</td><td></td></tr></HeaderTemplate>
            <ItemTemplate><tr><td><%#Eval("id") %></td><td><%#Eval("name") %></td><td>
                <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%#Eval("id","~/html/{0}.html")%>'>查看详细</asp:HyperLink></td></tr></ItemTemplate>
            <FooterTemplate></table></FooterTemplate>
    </asp:Repeater>

    点击生成按钮

        protected void Button2_Click(object sender, EventArgs e)
        {
            //<!--链接字符串
            string conn = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + HttpContext.Current.Server.MapPath("~/App_Data/database.mdb");
            OleDbConnection con = new OleDbConnection(conn);
            string tr = "select * from news";

            OleDbCommand com = new OleDbCommand(tr, con);
            DataSet ds = new DataSet();

            con.Open();
            OleDbDataAdapter da = new OleDbDataAdapter(com);
            da.Fill(ds);
            con.Close();
            //-->
            string path = Server.MapPath("~/html/");                        //带读取html模版的路径
            string temp = File.ReadAllText(path + "HTMLPage2.htm", System.Text.Encoding.UTF8);          //读取模版文件所有内容,和编码
            string body = "<table><tr><td>编号</td><td>名称</td><td></td></tr>";
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                body += "<tr><td>"
                + dr["id"] + "</td><td>"
                + dr["name"] + "</td><td><a href='../html/"
                + dr["id"] + ".html'>查看详细</a></td></tr>";           
            }
            body+="</table>";
            string cont = temp.Replace("$body$", body);
            File.WriteAllText(path + "Def.html", cont, System.Text.Encoding.UTF8);
        }
    }

    htm模板


    <html>
    <head>
        <title></title>
    </head>
    <body>
    $body$
    </body>
    </html>

  • 相关阅读:
    JS的中数的取值范围的大小
    前端通过xlsx插件导入excel
    H5和安卓原生进行交互的操作流程记录
    javascript中字符串和数字之间互相转换的方法总结
    gitlab代码合并到主分支
    typeof和valueof、instance of 之间的区别
    javascript中map会改变原始的数组吗
    使用typescript来写react遇到的一些问题
    使用javascript进行时间数据格式的转换
    在vue的移动端项目中使用vue-echarts
  • 原文地址:https://www.cnblogs.com/taikongbai/p/2580106.html
Copyright © 2011-2022 走看看