zoukankan      html  css  js  c++  java
  • 弗尤博客(三)

    此文章有错误,请结合下一篇博文浏览

    在上一篇文章中我们通过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         }
    View Code
    
    
  • 相关阅读:
    EF Code First一对一、一对多、多对多关联关系配置
    ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)
    ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行
    ASP.NET Core 1.0 入门——Application Startup¶
    ASP.NET Core管道深度剖析(1):采用管道处理HTTP请求
    EF Code First 学习笔记:约定配置
    ASPNET CORE初探
    EntityFramework 7.0之初探【基于VS 2015】(
    ASP.NET Core 开发
    sqlite3 外键作用原理和使用方法
  • 原文地址:https://www.cnblogs.com/frankybpx/p/10105962.html
Copyright © 2011-2022 走看看