请求在此上下文中不可用问题,控件作为参数

黄瓜编程 2013-10-30 12:15:28
写了一个公共函数放在app_code中,但是在其他页面调用时报错:System.Web.HttpException: 请求在此上下文中不可用,求解。

app_code:bll.cs 主要是想把Repeater之类的控件作为函数参数用


public void Paging(int totalrecord, int PageSize, int DigitNo, Control pagediv, Repeater rpt,string table,string id)
{
int CurrentPage, PageStart, PageEnd, TotalPage;
//****************************************//计算总页数
int pn1 = totalrecord / PageSize, pn2 = totalrecord % PageSize;
if (pn2 != 0)
TotalPage = pn1 + 1;
else
if (pn1 == 0)
TotalPage = 1;
else
TotalPage = pn1;
//****************************************
if (Request.QueryString["page"] == null)//获取当前页码
CurrentPage = 1;
else
CurrentPage = Convert.ToInt16(Request.QueryString["page"]);

PageStart = 1;//起始数字逻辑判断
if (CurrentPage >= DigitNo + 2)
PageStart = CurrentPage - DigitNo;

PageEnd = CurrentPage + DigitNo;//结束数字逻辑判断
if (PageEnd > TotalPage + 1)
PageEnd = TotalPage + 1;

if (CurrentPage != 1)
{
HyperLink FP = new HyperLink();//生成首页文字按钮
FP.Text = "首页"; FP.Style["color"] = "#06C";
FP.NavigateUrl = "?page=1";
HyperLink PP = new HyperLink();//生成上一页文字按钮
PP.Text = "上一页"; PP.Style["color"] = "#06C";
PP.NavigateUrl = "?page=" + (CurrentPage - 1);
pagediv.Controls.Add(FP);//将文字分页按钮装入pagediv容器
pagediv.Controls.Add(PP);
}

for (int i = PageStart; i < PageEnd; i++)//生成中间数字按钮,并进行相关判断
{
HyperLink no = new HyperLink();
no.Text = i.ToString();
no.NavigateUrl = "?page=" + i;
no.CssClass = "pagediv";
if (i == CurrentPage)
{
no.Enabled = false;
no.CssClass = "current";
}
pagediv.Controls.Add(no);//将数字分页按钮装入pagediv容器
}

if (CurrentPage != TotalPage)
{
HyperLink LP = new HyperLink();//生成尾页文字按钮
LP.Text = "尾页"; LP.Style["color"] = "#06C";
LP.NavigateUrl = "?page=" + TotalPage;
HyperLink NP = new HyperLink();//生成下一页文字按钮
NP.Text = "下一页"; NP.Style["color"] = "#06C";
NP.NavigateUrl = "?page=" + (CurrentPage + 1);
pagediv.Controls.Add(NP);//将文字分页按钮装入pagediv容器
pagediv.Controls.Add(LP);
}
//绑定数据库******************************降序排列
int StartIndex = (CurrentPage - 1) * PageSize + 1;
rpt.DataSource = DT("select top " + PageSize + " * from "+table+" where "+id+" <= (select min("+id+") from (select top " + StartIndex + " " + id + " from "+table+" order by "+id+" desc)) order by "+id+" desc");
rpt.DataBind();
}



调用页面:.aspx.cs


bll bl = new bll();
int RecordNo() { return bl.CountData("select count(b_id) from bianmin"); }//记录总数

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bl.Paging(RecordNo(), 2, 5, pagediv, Repeater1, "bianmin", "b_id");
}
}
...全文
112 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
黄瓜编程 2013-10-30
  • 打赏
  • 举报
回复
谢谢,我把aspx.cs页面继承了bll类,也行了。
feiyun0112 2013-10-30
  • 打赏
  • 举报
回复
Request 改成 System.Web.HttpContext.Current.Request
黄瓜编程 2013-10-30
  • 打赏
  • 举报
回复


现在发现个新问题,如果把paging() 放在.aspx.cs页面中,就没有错误,但是放在APP_CODE文件夹中的bll.cs中调用就有错
feiyun0112 2013-10-30
  • 打赏
  • 举报
回复
具体哪句报错?

*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧