数据表的创建如下所示;
clip_p_w_picpath002
图中的字段描述了相应的字段在实际应用中的意义,创建表的SQL语句如下所示。
USE [news]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[news]( //创建news表
[id] [int] IDENTITY(1,1) NOT NULL,
[title] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[time] [datetime] NULL,
[author] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[content] [nvarchar](3000) COLLATE Chinese_PRC_CI_AS NULL,
[weather] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[level] [int] NULL,
[hits] [int] NULL,
[classname] [int] NULL,
CONSTRAINT [PK_news] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
登录界面
为后台构建一个框架集,在Microsoft Expression Web 2中可以创建框架集并为框架集中的页面进行指定或新建,如图下图所示。
clip_p_w_picpath004
clip_p_w_picpath006
clip_p_w_picpath008
代码实现
身份验证页面示例代码如下所示;
protected void Button1_Click(object sender, EventArgs e)
{
try
{
SqlConnection con = new SqlConnection("Data Source=(local);
Initial Catalog=news;Integrated Security=True"); //创建连接
con.Open();
string strsql = "select * from admin where admin='" + TextBox1.Text + "' and password='"
+ TextBox2.Text + "'"; //创建SQL
SqlDataAdapter da = new SqlDataAdapter(strsql, con); //创建适配器
DataSet ds = new DataSet(); //创建数据集
int count = da.Fill(ds, "table"); //填充数据集
if (count > 0) //如果存在用户
{
Session["admin"] = TextBox1.Text; //配置一个Session
Response.Redirect("default.aspx"); //页面跳转
}
else
{
Label1.Text = "无法登录,请检查用户名和密码"; //提示无法登录
}
}
catch
{
Label1.Text = "无法进行数据连接"; //抛出异常
}
}
新闻发布页面示例代码如下所示;
protected void Page_Load(object sender, EventArgs e)
{
if (Session["admin"] == null) //如果不为管理员
{
Response.Redirect("login.aspx"); //登录跳转
}
TextBox2.Text = DateTime.Now.ToString(); //初始化字段
}
protected void Button1_Click(object sender, EventArgs e)
{
try
{
SqlConnection con = new SqlConnection("Data Source=(local);
Initial Catalog=news;Integrated Security=True"); //创建连接
con.Open(); //打开连接
string strsql = "insert into news (title,time,author,content,weather,level,hits,classname) values
('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "','" +
TextBox5.Text + "','" + TextBox4.Text + "','" + DropDownList1.Text + "',0,'" +
DropDownList2.Text + "')"; //SQL语句
SqlCommand cmd = new SqlCommand(strsql, con); //创建Command
cmd.ExecuteNonQuery(); //执行SQL语句
Response.Redirect("manage.aspx"); //页面跳转
}
catch(Exception ee)
{
Response.Write(ee.ToString()); //抛出异常
}
}
静态生成示例代码如下所示;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) //判断加载
{
string str = "<b>*title*</b>"; //模板代码
string database = "新闻标题"; //数据库字段
string output = str.Replace("*title*", database); //替换操作
Response.Write(output); //输出字符串
}
}
上述代码简单的定义了一个模板代码,其中str变量被定义为标签,database变量被定义为新闻标题,当需要生成静态时,可以将模板中代码的关键字进行替换,例如这里的*title*替换成为database变量中的标签,替换完成后输出替换后的字符串生成即可。在模板代码中,模板代码如下所示。
string str = "<b>*title*</b>";
其中*title*是定义的标签,用于替换关键字,*title*可以替换新闻标题数据进行呈现。在了解了静态生成的原理之后,就能够使用模板解析进行静态生成,示例代码如下所示。
protected void Button1_Click(object sender, EventArgs e)
{
try
{
SqlConnection con = new SqlConnection("Data Source=(local);
Initial Catalog=news;Integrated Security=True"); //创建连接
con.Open(); //打开连接
string strsql = "insert into news (title,time,author,content,weather,level,hits,classname) values
('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "','" +
TextBox5.Text + "','" + TextBox4.Text + "','" + DropDownList1.Text + "',0,'" +
DropDownList2.Text + "')"; //SQL语句
SqlCommand cmd = new SqlCommand(strsql, con); //创建执行对象
cmd.ExecuteNonQuery(); //执行SQL
StreamReader aw = File.OpenText(Server.MapPath("template.htm")); //打开模板
string template = aw.ReadToEnd(); //读取模板
aw.Close(); //关闭对象
template = template.Replace("[新闻标题]", TextBox1.Text); //替换标签
template = template.Replace("[发布时间]", TextBox2.Text); //替换标签
template = template.Replace("[新闻作者]", TextBox3.Text); //替换标签
template = template.Replace("[新闻天气]", TextBox4.Text); //替换标签
template = template.Replace("[新闻内容]", TextBox5.Text); //替换标签
StreamWriter sw = File.CreateText(Server.MapPath("../html/" + DateTime.Now.Year.ToString()
+ DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString()
+ DateTime.Now.Hour.ToString() + DateTime.Now.Second.ToString()
+ ".htm")); //生成文件
sw.Write(template); //编写内容
sw.Close(); //关闭对象
Response.Redirect("manage.aspx"); //页面跳转
}
catch(Exception ee)
{
Response.Write(ee.ToString()); //抛出异常
}
}