小陈解说
首先要创建好数据库
create database MyDB
然后创建和Article这两个表Catelog
--创建Catelog表create table Catelog(
Id int identity(1,1) primarykey,
Name nvarchar(50),
Comment text,
)
--创建Article表create table Article( Id int identity(1,1) primarykey,
Title nvarchar(50),
Author nvarchar(50),
Content text,
Time datetime default(getdate()),
CatelogId int references Catelog(Id) )
然后在两个表中加入几条测试数据
首先打开vs
创建ASP。Net Web应用程序(.NET Framework)项目
之后正确创建三层架构和正确的添加引用
创建三个类库 Model(数据模型层),DAL(数据访问层),BLL(业务逻辑层)
DAL层引用Model层
BLL引用DAL和Model
web引用BLL以及Model
Model(模型层)
之后在Model层中正确的添加数据ADO.Net实体数据模型
右键点击Model添加新建项
找到ADO.Net实体数据模型
选择来自数据库的EF设计器
点击下一步来到咱们的数据连接
先点新建连接,然后完成身份验证,找到要连接数据库后点击下一步
然后选择实体框架6.x 继续点击下一步
点开表找到自己要用到的表点击完成
当出现下面这个就是创建成功了
还有一个最重要的是,打开Model层中的App.Config
找到下面代码
<connectionStrings>
<addname="zhiboDBEntities"connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;providerconnectionstring="datasource=.;initialcatalog=zhiboDB;integratedsecurity=True;MultipleActiveResultSets=True;App=EntityFramework""providerName="System.Data.EntityClient"/>
</connectionStrings>
然后剪切到web(视图层)的web.onfig文件中就可以啦
接下来就是DAL(数据访问层)
首先在Model层的引用中找到EntityFramework,然后右键,在对象浏览器中查看EntityFramework的路径
然后复制这个路径,在DAL层添加引用,点击浏览,黏贴之前复制的路径,找到EntityFramework和EntityFramework.sqlserver这两个文件,引用就好了。
使用同样的方法在web(视图层)也添加EntityFramework和EntityFramework.sqlserver这两个文件的引用
数据访问层
接下来是在DAL层添加DAO类并开始编写代码
新建DAO类
先实例化模型层
MyDBEntities db = new MyDBEntities();
写入页面查询显示的方法
public object Select()
{
return db.Article.Select(p => p).ToList();
}
然后再写入添加数据的方法
public int Add(Article a ,Catelog c)
{
db.Article.Add(a);
db.Catelog.Add(c);
a.CatelogId = c.Id;
returndb.SaveChanges();
}
再写入添加页面的类型值的下拉框的值方法
public object Select()
{
var u=from cin db.Catelog
selectc.Name;
return u;
}
业务逻辑层
BLL层没有很复杂的东西,调用DAO类中我们之前写的方法就行了
首先是添加service类
然后实例化DAO
之后就是调用,代码如下
DAO da =new DAO();
调用数据访问层的Select方法
实现主页面显示数据
public object Select()
{
return da.Select();
}
调用数据访问层的Add方法
实现添加返回行数确认
public bool Add(Article a, Catelog c)
{
if(da.inset(a,c) !=0)
{
return true;
}else{
return false;
}
}
调用数据访问层的XialaSelect方法
实现添加页面的类型的值的集合
public object Select(){
return da.Select();
}
接下来就是视图层了
创建Select.aspx 和Add.aspx 窗体文件
先添加一个下拉框控件DropDownList和数据控件Repeater
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<div id="app1">
<div>
<h1><b><%# Eval ("Title") %></b></h1><br />
<hr />
</div>
<div>
<span>作者:<%# Eval ("Author")
%></span><span>发表时间:<%# Eval ("Datetime")
%></span><br /><br /></div>
<div>
<asp:Label ID="Label1" runat="server" ><%# Eval ("Content") %></asp:Label>
<asp:LinkButton ID="LinkButton1"
runat="server" CommandName="di" CommandArgument='<%# Eval("ID")
%>' ForeColor="#ccffff"><%# Eval("Content")
%></asp:LinkButton>
</div><br /><br />
</div>
</ItemTemplate>
</asp:Repeater>
再通过下面代码绑定数据源
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.DropDownList1.DataSource = services.Selectbyname();
this.DropDownList1.DataBind();
this.Repeater1.DataSource = services.Select();
this.Repeater1.DataBind();
}
}
然后写一个添加页面(Add.aspx)的跳转地址
在主页面添加HyperLink控件,并编辑控件的NavigateUrl属性
添加页面
在Add.aspx窗体页面添加需要添加的布局
标题
内容
作者
类型
类型要用到下拉框,这就需要用到我们之前写的查询所有类型的方法了
然后将下拉框数据进行绑定
然后点击设计,在DropDownList上绑定数据源
再写提交按钮的单击事件
protected void Button1_Click (objectsender, EventArgs e){
Article a =newArticle();
Catelog c =newCatelog();
a.Title =this.TextBox1.Text;
a.Content =this.TextBox2.Text;
a.Author =this.TextBox3.Text;
c.Name =this.TextBox4.Text;
a.Time = DateTime.Now;if(hj.inset(a,c)) {
Response.Redirect("~/select.aspx?msg=添加成功");
}else{
Response.Write("alert(添加失败')");
}
}
在然后添加成功会跳转到查询表页面并且显示出来
现在写添加页面的后台代码,如下
protected void Page_Load(objectsender, EventArgs e){
if(!IsPostBack)
{
string msg = Request.QueryString["msg"];
if(!string.IsNullOrEmpty(msg))
{
Response.Write(" alert('添加成功')");
}
}
}
成功后会显示添加成功
接下来来添加下拉框,通过下拉框选择类型进行筛选
先找到属性,取消乱码情况
在DropDownList控件中添加两个属性,一个是AutoPostBack,另一个是OnSelectedIndexChanged
将AutoPostBack里边的值设置为true
在属性OnSelectedIndexChanged添加一个方法
在方法中具体绑定代码如下:
var data= se.Select(int.Parse(this.DropDownList1.SelectedValue));
this.Repeater1.DataSource =data;
this.Repeater1.DataBind();
接下来来写查看详情
首先在Add.aspx中LinkButton控件里边的两个很重要的属性一个是CommandName这个属性是命名,我们就用Name, 另一个是CommandArgument这个是绑定的ID,及待会要进行的ID查看,也是进行传值
在repeater控件中添加一个属性OnItemCommand,该属性是用来写方法的
创建新窗体xiangqing.aspx
<div id="app">
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<div id="app1">
<div>
<h1><b><%# Eval ("Title") %></b></h1><br />
<hr />
</div>
<div>
<span>作者:<%# Eval ("Author") %></span><span>发表时间:<%# Eval ("Datetime") %></span><br /><br /></div>
<div>
<asp:Label ID="Label1" runat="server" ><%# Eval ("Content") %></asp:Label>
</div><br /><br />
</div>
</ItemTemplate>
</asp:Repeater>
</div>
在再加载事件中绑定数据源
service services = new service();
protected void Page_Load(object sender, EventArgs e)
{
ArtService se = new ArtService();
protected void Page_Load(object sender, EventArgs e) {
int id = int.Parse(Request.QueryString["id"]);
this.Repeater1.DataSource = se.Sel(id);
this.Repeater1.DataBind();
}
}