此文章有错误,请结合下一篇博文浏览
在上一篇文章中我们通过session和母版页记录的登录状态,利用空间没有text后消失的原理实现,那么问题来了,在我们访问自己的博客主页时,可以直接用session的值来获取登录用户的信息,那么登录后访问他人博客如何在同一个网页中实现呢。
首先我们来看下信息表:
ps:NULL我别的地方还没有完善,这样不报错;
自己的博客主页,我用datalist,在里面加linkbotton,这样的形式完成的。在博客网站首页点击“我的博客”进入的。通过传进来的session来,查找用户名,确定该页面为用户主页。
然后,登陆状态下,通过网站首页中的文章来访问他人主页,我用DataList1_ItemCommand中的CommandArgument和CommandName来完成的,由于我首页博文是datalist显示的,所以这样能访问到每个bid。然后呢,通过这个bid查找对应的uid,实现访问他人博客。
其中,用到了多表连接查询,我的bid是标识的,所以每个都不同,即使是同一个用户,但是单用左连接的话查询会把这个uid发的所有文章都显示出来,如果我们加只显示第一行就好,就不会在我的博客页赋值时因为有多个相同列而报错,在上课时学的子查询发现查询不了,网上找到的这个方法:参考链接:https://www.cnblogs.com/wangyanyan/archive/2018/01/16/8296801.html
如果不加top,那么由于我的博客头部是datalist,所以会出现重复数据,因为他每条数据都会被分别显示。
此外因为我显示文章是iframe里写的所以别忘了在后台加新页面跳转代码。
form1.Target = "_blank";
好了话不多说上代码。
1 //博客网站首页文章 2 protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) 3 { 4 if (e.CommandName == "blogs") 5 { 6 Response.Redirect("UserBlogs.aspx?bid=" + e.CommandArgument.ToString()); 7 } 8 } 9 10 11 //我的博客 12 protected void Page_Load(object sender, EventArgs e) 13 { 14 if (Session["uid"] == null) 15 { 16 Aind(); 17 } 18 else 19 { 20 if (Request.QueryString["bid"] == null) 21 { 22 Bind(); 23 } 24 else 25 { 26 Aind(); 27 } 28 29 } 30 } 31 public void Bind() 32 { 33 UserBusiness uname = new UserBusiness(); 34 UserEntity user = new UserEntity(); 35 user.Uid = Session["uid"].ToString(); 36 DataTable dt = new DataTable(); 37 dt = uname.FindUserInfo(user); 38 DataList1.DataSource = dt; 39 DataList1.DataBind(); 40 } 41 public void Aind() 42 { 43 BlogsBusiness blogs = new BlogsBusiness(); 44 BlogsEntity b = new BlogsEntity(); 45 DataTable dt = new DataTable(); 46 dt = blogs.SelectUid(); 47 DataList1.DataSource = dt; 48 DataList1.DataBind(); 49 50 } 51 52 //Bussiness 53 public DataTable SelectBlogs() 54 { 55 string sqlText = "select * from Blogs";//返回值是数据集 56 DataTable dt = new DataTable();//实例化数据集对象 57 dt = DA.GetDataTable(sqlText, CommandType.Text, null, null); 58 return dt; 59 } 60 public DataTable SelectUid() 61 { 62 string sqlText = "select top 1* from Blogs left join UserInfo on Blogs.uid=UserInfo.uid "; 63 DataTable dt = new DataTable(); 64 dt = DA.GetDataTable(sqlText, CommandType.Text, null, null); 65 return dt; 66 }