就是很多的页面的处理一样的,不一样的就是我们写的存储过程不同,还有页面的一些名字不同
应如何写一基类页面,别的页面继承?
能给个例子嘛?发邮件也可以..如有,另300分再开一贴相送..谢谢
using System;
using System.IO;
using System.Web;
using System.Text.RegularExpressions;
using Discuz.Forum;
using Discuz.Common;
using Discuz.Config;
using Discuz.Entity;
namespace Discuz.Web.UI.Pages
{
/// <summary>
/// Discuz!NT页面基类
/// </summary>
public class BasePage : System.Web.UI.Page
{
public string forumpath = BaseConfigs.GetForumPath;
/// <summary>
/// BasePage类构造函数
/// </summary>
public BasePage()
{
config = GeneralConfigs.GetConfig();
LoadUrlConfig();
userid = Utils.StrToInt(ForumUtils.GetCookie("userid"), -1);
//清空当前页面查询统计
Discuz.Data.DbHelper.QueryCount = 0;
// 如果启用游客页面缓存
if (userid == -1)
{
if (config.Guestcachepagetimeout > 0)
{
switch (pagename)
{
case "website.aspx":
isguestcachepage = GetCachePage(pagename);
break;
case "forumindex.aspx":
isguestcachepage = GetCachePage(pagename);
break;
case "spaceindex.aspx":
isguestcachepage = GetCachePage(pagename);
break;
case "albumindex.aspx":
isguestcachepage = GetCachePage(pagename);
break;
case "showtopic.aspx":
int pageid = DNTRequest.GetQueryInt("page", 1);
int topicid = DNTRequest.GetQueryInt("topicid", 0);
if (pageid == 1 && DNTRequest.GetParamCount() == 2 && topicid > 0 && ForumUtils.ResponseTopicCacheFile(topicid, config.Guestcachepagetimeout))
{
TopicStats.Track(topicid, 1);
return;
}
break;
default:
//
break;
}
}
}
AddMetaInfo(config.Seokeywords, config.Seodescription, config.Seohead);
if (config.Nocacheheaders == 1)
{
System.Web.HttpContext.Current.Response.BufferOutput = false;
System.Web.HttpContext.Current.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
System.Web.HttpContext.Current.Response.Cache.SetExpires(DateTime.Now.AddDays(-1));
System.Web.HttpContext.Current.Response.Expires = 0;
System.Web.HttpContext.Current.Response.CacheControl = "no-cache";
System.Web.HttpContext.Current.Response.Cache.SetNoStore();
}
//当为forumlist.aspx或focuslist_aspx,可能出现在线并发问题,这时系统会延时2秒
if((pagename != "forumlist.aspx") && (pagename != "focuslist.aspx"))
{
oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
}
else
{
try
{
oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
}
catch
{
System.Threading.Thread.Sleep(2000);
oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
}
}
userid = oluserinfo.Userid;
usergroupid = oluserinfo.Groupid;
username = oluserinfo.Username;
password = oluserinfo.Password;
if (password.Length > 16)
{
userkey = password.Substring(4, 8).Trim();
}
else
{
userkey = "";
}
lastposttime = oluserinfo.Lastposttime;
lastpostpmtime = oluserinfo.Lastpostpmtime;
lastsearchtime = oluserinfo.Lastsearchtime;
olid = oluserinfo.Olid;
if (Utils.InArray(DNTRequest.GetString("selectedtemplateid"), Templates.GetValidTemplateIDList()))
{
templateid = DNTRequest.GetInt("selectedtemplateid", 0);
}
else if (Utils.InArray(Utils.GetCookie(Utils.GetTemplateCookieName()), Templates.GetValidTemplateIDList()))
{
templateid = Utils.StrToInt(Utils.GetCookie(Utils.GetTemplateCookieName()), config.Templateid);
}
if (templateid == 0)
{
templateid = config.Templateid;
}
pmsound = Utils.StrToInt(ForumUtils.GetCookie("pmsound"), 0);
usergroupinfo = UserGroups.GetUserGroupInfo(usergroupid);
// 根据用户组得到相关联的管理组id
useradminid = usergroupinfo.Radminid;
// 如果论坛关闭且当前用户请求页面不是登录页面且用户非管理员, 则跳转至论坛关闭信息页
if (config.Closed == 1 && pagename != "login.aspx" && pagename != "logout.aspx" && pagename != "register.aspx" && useradminid != 1)
{
ShowMessage(1);
return;
}
if (config.Onlinetimeout > 0 && userid != -1)
{
onlineusercount = OnlineUsers.GetOnlineAllUserCount();
}
else
{
onlineusercount = OnlineUsers.GetCacheOnlineAllUserCount();
}
if (onlineusercount >= config.Maxonlines && useradminid != 1 && pagename != "login.aspx" && pagename != "logout.aspx")
{
ShowMessage("抱歉,目前访问人数太多,你暂时无法访问论坛.", 0);
return;
}
if (usergroupinfo.Allowvisit != 1 && useradminid != 1 && pagename != "login.aspx" && pagename != "register.aspx" && pagename != "logout.aspx" && pagename != "activationuser.aspx")
{
ShowMessage("抱歉, 您所在的用户组不允许访问论坛", 2);
return;
}
// 如果IP访问列表有设置则进行判断
if (config.Ipaccess.Trim() != "")
{
string[] regctrl = Utils.SplitString(config.Ipaccess, "\r\n");
if (!Utils.InIPArray(DNTRequest.GetIP(), regctrl))
{
ShowMessage("抱歉, 系统设置了IP访问列表限制, 您无法访问本论坛", 0);
return;
}
}
// 如果IP访问列表有设置则进行判断
if (config.Ipdenyaccess.Trim() != "")
{
string[] regctrl = Utils.SplitString(config.Ipdenyaccess, "\n");
if (Utils.InIPArray(DNTRequest.GetIP(), regctrl))
{
ShowMessage("由于您严重违反了论坛的相关规定, 已被禁止访问.", 2);
return;
}
}
// 如果当前用户请求页面不是登录页面并且当前用户非管理员并且论坛设定了时间段,当时间在其中的一个时间段内,则跳转到论坛登录页面
if (useradminid != 1 && pagename != "login.aspx" && pagename != "logout.aspx" && usergroupinfo.Disableperiodctrl != 1)
{
if (Scoresets.BetweenTime(config.Visitbanperiods))
{
ShowMessage("在此时间段内不允许访问本论坛", 2);
return;
}
}
if (userid != -1)
{
string ignore = DNTRequest.GetString("ignore");
newpmcount = Users.GetUserNewPMCount(userid);
realnewpmcount = Math.Abs(newpmcount);
if (ignore.ToLower().Equals("yes"))
{
newpmcount = newpmcount * -1;
Users.SetUserNewPMCount(userid,newpmcount);
}
}
templatepath = Templates.GetTemplateItem(templateid).Directory;
nowdate = Utils.GetDate();
nowtime = Utils.GetTime();
nowdatetime = Utils.GetDateTime();
ispost = DNTRequest.IsPost();
isget = DNTRequest.IsGet();
link = "";
script = "";
templatelistboxoptions = Caches.GetTemplateListBoxOptionsCache();
isseccode = Utils.InArray(pagename, config.Seccodestatus);
if ((isseccode)&&(ispost))
{
if (DNTRequest.GetString("vcode") == "")
{
if (pagename == "showforum.aspx")
{
//版块如不设置密码,必无校验码
//return;
}
else if (pagename.EndsWith("ajax.aspx"))
{
if (DNTRequest.GetString("t") == "quickreply")
{
ResponseAjaxVcodeError();
}
}
else
{
AddErrLine("验证码错误");
}
}
else
{
if (!OnlineUsers.CheckUserVerifyCode(olid, DNTRequest.GetString("vcode")))
{
if (pagename.EndsWith("ajax.aspx"))
{
ResponseAjaxVcodeError();
}
else
{
AddErrLine("验证码错误");
}
}
}
}
}
}
}
C#基础教程-c#实例教程,适合初学者。 第一章 C#语言基础 本章介绍C#语言的基础知识,希望具有C语言的读者能够基本掌握C#语言,并以此为基础,能够进一步学习用C#语言编写window应用程序和Web应用程序。...
本文将从上往下,循序渐进的介绍一系列相关.NET的概念,先从类型系统开始讲起,我将通过跨语言操作这个例子来逐渐引入一系列.NET的相关概念,这主要包括:CLS、CTS(CLI)、FCL、Windows下CLR的相关核心组成、Wind...
结构不能继承,但可以实现接口。类可以有显式声明的无参数构造函数;结构不能包含显式的无参数构造函数。结构中不能有实例字段初始值设定,但类没有任何限制。类的构造函数里面可以不用对所有字段进行初始化;结构的...
本文将从上往下,循序渐进的介绍一系列相关.NET的概念,先从类型系统开始讲起,我将通过跨语言操作这个例子来逐渐引入一系列.NET的相关概念,这主要包括:CLS、CTS(CLI)、FCL、Windows下CLR的相关核心组成、Windows...
文章是原作者一字一字亲手码出来的,每天下班用休息时间写一点,持续了二十来天。且对于文章上下衔接、概念引入花了很多心思,致力让很多概念在本文中显得通俗。
原文地址:https://www.cnblogs.com/1996V/p/9037603.html?... ... 无意间看到的文章,文章真的写的太详细太通俗了,搬过来 细细看完,保证你对.NET有个新的认识理解 这是原文博主留下的常用总...
目的: 实现用MasterPage中的.cs文件 代替项目中的PageBase。 动机: 写这篇文章的动机,来自于一次项目重构。在.Net Framwork
半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面的那条线路称为线路1,下面的称为线路2. 思路1 先判断线路1的第一个节点的下级节点是否是...
本文将从上往下,循序渐进的介绍一系列相关.NET的概念,先从类型系统开始讲起,我将通过跨语言操作这个例子来逐渐引入一系列.NET的相关概念,这主要包括:CLS、CTS(CLI)、FCL、Windows下CLR的相关核心组成、Windows...
本文将从上往下,循序渐进的介绍一系列相关.NET的概念,先从类型系统开始讲起,我将通过跨语言操作这个例子来逐渐引入一系列.NET的相关概念,这主要包括:CLS、CTS(CLI)、FCL、Windows下CLR的相关核心组成、Windows...
1.new、delete、malloc、free关系 delete会调用对象的析构函数,和new对应,free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放...
通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?(转) 一、总结 一句话总结:.NET是一个平台,包含多种语言,比如(C#、Visual Basic、C++/CLI、Eiffel、F#、Iron...而作为一个开发者平台,它不仅...
关于多态本人写过一篇随笔,您兴趣的可以看一下...现在的需求是这样子(当然该需求是借助于最近的项目中碰到的问题),在该系统中的流程管理中,有两个页面,一个显示的是我本人发起的审批列表,另一个是等待我进行...
本文将从上往下,循序渐进的介绍一系列相关.NET的概念,先从类型系统开始讲起,我将通过跨语言操作这个例子来逐渐引入一系列.NET的相关概念,这主要包括:CLS、CTS(CLI)、FCL、Windows下CLR的相关核心组成、Win...
在页面首次加载时,编写控件初始化代码和页面变量初始化代码 2. 什么时候会用到cookie,session?它们的区别分别是什么? Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。 1...
1.维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么? 答:尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务...
2019美赛题目,完全是从官网下载,无翻译,可使用有道软件翻译浏览
讲诉python爬虫的20个案例 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
本课程的主要内容是指针,用10节课五六个小时,从10个角度讲了指针的用法和相关知识点。其中有很多都是C程序员难以理解或者难以应用到实践编程中的知识点,也是嵌入式程序员面试笔试时经常遇到的题目。本课程的目标是让大家深入理解指针的各种使用技巧。 本课程为《C语言高级专题》的第三部分,本专题适合有一定C语言基础(至少要学过C语言,掌握gcc开发环境,会在linux命令行下编写、编译、运行、调试简单C语言程序)的同学;如果是零基础的同学,请先看我的《嵌入式工程师养成计划系列 — 朱老师带你零基础学Linux》和《嵌入式linux C语言完全学习》(光盘里的名字叫《嵌入式linux C编程基础》)
本课程主要是针对AI算法中的行为树给大家通过案例分析如何使用。 掌握了行为树可以在游戏中的AI算法使用。
2020年美赛优秀论文集,论文为完整版,包含附录,可以上手实操,不过全为英文,推荐结合CopyTranslator阅读:https://copytranslator.github.io/
本仓库发布的jd_seckill项目中涉及的任何脚本,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。 本项目内所有资源文件,禁止任何公众号、自媒体进行任何形式的转载、发布。 huanghyw 对任何脚本问题概不负责,包括但不限于由任何脚本错误导致的任何损失或损害. 间接使用脚本的任何用户,包括但不限于建立VPS或在某些行为违反国家/地区法律或相关法规的情况下进行传播, huanghyw 对于由此引起的任何隐私泄漏或其他后果概不负责。 请勿将jd_seckill项目的任何内容用于商业或非法目的,否则后果自负。
深入浅出Lua学习 深入浅出Lua学习
本系列教程内容涵盖PHP常用的设计模式,旨在指导读者搭建易扩展的项目框架,高服用的代码,大程度的发挥面向对象思想的优势。 提升PHP程序员面向对象思想以及解决问题的能力,进而构建出高复用、易扩展的优秀框架。
visio_2016下载安装,亲测可用,不需要破解,而且无秘钥。简单方便实用
科研伦理与学术规范 期末考试2 (40题)
包含2020美赛所有题目的所有O奖论文,A题8篇,B题5篇,C题6篇,D题7篇,E题5篇,F题6篇。
在企业级项目开发中一个非常重要的设计就是如何有效地管理内存资源。在C语言中,关于内存管理的知识点比较多,如函数变量、作用域、指针、堆 、栈、 常量区、全局静态区、要想真正掌握和理解C语言,就必须先精通C语言内存管理机制。 黄老师精选内存相关知识点,循序渐进,最后以一个复杂的内存池设计实现贯穿对整个课程知识要点,让学员真正透彻理解C语言内存管理!
2020年美赛C题O奖论文(含6篇)
此文档有详细奥特曼大全及关系明细