ASP.Net学习(五)

1.信息分页

两种方式,一种简单前后页分页、一种数字分页。

 /// <summary>
        /// 获取总记录数
        /// </summary>
        /// <returns></returns>
        public int GetRecordCount()
        {
            string sql = "select  count(*)  from Student";
            return Convert.ToInt32(SqlHelper.ExecuteScalar(sql, CommandType.Text));
        }

        /// <summary>
        /// 根据指定的范围,获取指定的数据
        /// </summary>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <returns></returns>
        public List<UserInfo> GetPageList(int start, int end)
        {
            string sql = "select * from (select * ,row_number()  over (order by UserId) as num from  Student) as t where t.num>=@start and t.num<=@end";
            SqlParameter[] pars = {
                            new SqlParameter("@start",SqlDbType.Int),
                            new SqlParameter("@end", SqlDbType.Int)
                                                };
            pars[0].Value = start;
            pars[1].Value = end;

            DataTable da = SqlHelper.GetDataTable(sql, CommandType.Text, pars);
            List<UserInfo> list = null;
            if (da.Rows.Count > 0)
            {
                list = new List<UserInfo>();
                UserInfo userInfo = null;
                foreach (DataRow row in da.Rows)
                {
                    userInfo = new UserInfo();
                    LoadEnity(userInfo, row);
                    list.Add(userInfo);
                }
            }
            return list;
        }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using _0715StudentProject.Model;
using _0715StudentProject.BLL;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _2020_07_18_NewList : System.Web.UI.Page
{

    public string StrHtml { get; set; }

    public int PageIndex { get; set; }
    public int PageCount { get; set; }
    protected void Page_Load(object sender, EventArgs e)
    {
        int pageSize = 5;
        int pageIndex;
        if (!int.TryParse(Request.QueryString["pageIndex"], out pageIndex))
        {
            pageIndex = 1;
        }
        UserInfoService userInfoService = new UserInfoService();
        int pagecount = userInfoService.GetPageCount(pageSize);//获取总页数
        PageCount = pagecount;
        //对当前页码值范围进行判断
        PageIndex = pageIndex < 1 ? 1 : pageIndex;
        PageIndex = pageIndex > pagecount ? pagecount : pageIndex;
        PageCount = pagecount;
        List<UserInfo> list = userInfoService.GetPageList(pageIndex, pageSize);//获取分页数据
        StringBuilder sb = new StringBuilder();
        foreach (UserInfo userInfo in list)
        {
            sb.AppendFormat("<li><span>{0}</span><a href='#'target='_blank'>{1}</a></li>", userInfo.RegTime.ToShortDateString(), userInfo.UserName);
        }
        StrHtml = sb.ToString();
    }
}

2.IsPostBack

 protected void Page_Load(object sender, EventArgs e)
    {
        //如果隐藏的值不为空,表示用户单击了提交按钮发出了POST请求
        //if (!string.IsNullOrEmpty(Request.Form["idPostBack"]))
        //IsPostBack:如果是Post请求该属性的值为true,如果是GET请求该属性的值为false
        //IsPostBack:是根据___VIWESTATE隐藏域进行判断,如果是POST请求那么该隐藏域的值
        //回提交到服务器端,那么就不能用该属性进行判断是POST请求还是GET请求。因为去掉form
        //标签的runat="server",那么就不会再产生____VIEWSTATE隐藏域了。
        if (IsPostBack)
        {
            InsertUserInfo();
        }

 3.ViewState状态保持

ViewState:实现状态保持的对象.

隐藏域

  protected void Page_Load(object sender, EventArgs e)
    {
        int count = 0;
        if (ViewState["count"] != null)
        {
            count = Convert.ToInt32(ViewState["count"]);
            count++;
            Count = count;
        }
        ViewState["count"] = Count;
        //当我们把数据给了ViewState对象后,该对象回将该数据进行编码,然后存到
        //   __VIEWSTATE隐藏域中,然后返回会给浏览器。
        //用户通过浏览器单击‘提交’按钮,回向服务器端发送一个POST请求那么服务端自动
        //接受__VIEWSTATE隐藏域的值,并且再反编码,重新赋值给ViewState对象


    }

4:客户端状态保持(cookie)重点

       cookie:一小段文本,明文。存储在客户端的浏览器内存里面或者磁盘。cookie是跟网站相关,百度可以往客户端写cookie,sina也可写cookie,但是百度只能读取跟百度网站相关的cookie。cookie会随着请求网站一块发送到后台【如果请求百度的时候,那么就把百度的cookie放到请求报文里面去,然后发送到后台。】www.xxx.com

        cookie可以设置一个Path来限制某个路径下面的页面才会把cookie发送到后台。比如:请求图片,请求一个css、js,为了提高性能,可以通过 path设置页面的所在路径,来控制cookie的发送。
 Cookie的域:浏览器往后台发送数据时候,要把cookie放到请求报文里面去,发送到后台。
问题:请求是子域的网页,那么主域的cookie会不会发送到后台呢?
答案:是的。一块发送。如果请求时主域页面,子域的cookie是不会发送到后台的。
如果子域想让请求主域页面的时候也一块发送到后台,设置当前Cookie的域为主域可以了。
cookie是通过响应报文的方式写到前台。最终写入Cookie是通过响应报文头来的 ;cookie有限制(大多数浏览器)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

挑战不可

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值