前段时间遇到了需要禁用刷新的需求,f5按钮就不说了,简单的js就能把它禁用,但是工具条上的刷新按钮却傻傻干不掉。
如果简单的在刷新时重新加载画面,通过window.location.href="url"可以很容易的实现,但是需求是要求在刷新时什么都不做,保留画面的状态,这下子可就复杂化了。
asp.net中分辨请求是重新请求还是通过刷新按钮再次请求不是很方便,为了实现这个效果,试过了很多的方式,一下面的两种为例
1.
复制代码 代码如下:
private bool pageRefreshed = false; //页面是否刷新提交
private bool refreshState = false; //ViewState中暂存的状态
然后重写Page的LoadViewState与SaveViewState方法:
复制代码 代码如下:
protected override void LoadViewState(object savedState)
{
object[] states = (object[])savedState;
base.LoadViewState(states[0]);
refreshState = (bool)states[1];
if(Session["__PAGE_REFRESHED"] == null)
pageRefreshed = false;
else
pageRefreshed = refreshState != (bool)Session["__PAGE_REFRESHED"];
}
protected override object SaveViewState()
{
Session["__PAGE_REFRESHED"] = !refreshState;
object[] states = new object[2];
states[0] = base.SaveViewState();
states[1] = !refreshState;
return states;
}
复制代码 代码如下:
private void Button1_Click(object sender, EventArgs e)
{
if (pageRefreshed )
{
label.Text="this is refreshed function";
}
else
{
label.Text="this is new request function";
}
}
这种方法虽然能够实现,但是在某些请款下不适应。如果画面上同时存在文本框和按钮式,设置按钮的autopostback="True"时,在修改完文本框的值,直接点击按钮(在文本框没有失去焦点时,直接点击按钮),这时的执行顺序是textchanged→textchanged→buttonclick,在第一次textchanged时,就把状态已经变成了true,按钮的不能执行。
2.codeproject找到了另外一种解决方法 这种方式能够准确的判断是否是通过浏览器的刷新按钮进行的请求,而且使用起来也非常简单!
1.引用dll,修改配置文件
在配置文件中添加modules
复制代码 代码如下:
<system.web>
<httpModules>
<add name="RefreshModule"
type="RefreshModule.Module, RefreshModule"/>
</httpModules>
</system.web>
PS:wbapplication的情况下需要改成在system.webServer的modules的节点下追加modules
2.定义刷新时的行为
复制代码 代码如下:
[Refresh()]
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack && !RefereshHelper.IsPageRefreshed)
{
// do some work with the submitted date
}
else
{
// do some work when the page is loaded with the GET method
}
}
}
RefereshHelper.IsPageRefreshed这个参数就是用来判断是否是通过浏览器的书刷新按钮进行的请求。其他的行为行为控制参照原文。PS:codeproject真是个不过的地方,很多问题都是通过它来解决的其他的方式不一一列举,列举的第二种方式可以说简单易用,所有的实现都已经为我们封装好了,只需要简单的调用。
相关推荐:
AI免费生成文章让创作变得轻松自如
ChatGPT无服务:如何突破限制,未来人工智能的新可能,ai绘制装饰画
AI缩写在线:让人工智能助力你行业前沿技术,ai uhrehara
seo用什么论坛引流,seo引流方法 ,ai写作续写神器
seo适合看什么书,自学seo书籍推荐 ,ai少女 刻晴
什么是seo推广找行者SEO,seo推广效果怎么样 ,西宁ai万词霸屏系统
人工润色:让文字更具魅力的秘密武器,快排seo软件哪个最好
SEO新人必读:从零开始SEO的核心技巧与实践指南,网站邮件推广设计
二SEO是什么,h二seo三是什么 ,ai手术机
ChatGPT怎么打不开了?揭秘背后的原因与解决方法,ai中打开ai文件丢失
AI一键生成文章,写作新境界
ChatGPT页面无法访问?解决方案,让你轻松摆脱困扰!,ai染发颜色
SEO优化如何提升网站排名,驾驭搜索引擎流量,三亚网站推广方法
未来的效率利器AI软件下载AI,助您轻松驾驭智能世界
亚马逊seo信息是什么,亚马逊seo关键词优化软件 ,光谷ai
ZBlog:开启你的个人网站新时代,轻松搭建与管理,二手手机营销推广方案
seo能解决什么问题,seo会遇到哪些问题 ,挚爱花嫁ai
ChatGPT的VPN梯子:畅享全球互联网自由,打破地域限制,一直搜Ai
如何下载免费AI软件,让你的工作和生活更智能
SEO优化是做什么的?让你的网站流量飙升的秘密武器,乳腺癌ai作用机理
SEO桔子:提升网站排名的必备法宝,seo外包销售
ChatGPT显示“此网站无法加载站点”:背后原因与解决办法详解,用ai画明度渐变条
seo词库优化,搜索词条优化 ,ai点选择
SEO拓客,让您的业务飞速增长!,密云自适应网站建设
如何查文章AI率?全面解析AI文章检测工具及技巧
ChatGPT模型进化历程:人工智能的智慧革命,ai 喷枪星空
打造内容创作新高度:文章扩写AI的革命性优势
SEO爱站:提升网站排名,赢得流量的秘密武器,优化网站设计价格多少
智能AI生成文章释放创作新可能
SEO包月服务:助力企业提升网站排名与流量的长期利器,网站建设流程 报读文库
SEO攻略:搜索引擎优化,快速提升网站排名,网站推广网站优化费用
SEO每日:提高网站流量的秘密武器,助你脱颖而出,seo优化和排名技巧
ChatGPT全球宕机:人工智能的崩塌与未来的挑战,中国ai和美国ai教父
seo软件叫什么,seo软件视频教程 ,eps ai 缩略图
ChatGPT崩了?用户称打开是一片空白,背后隐藏了什么?,ai 新技巧
SEO职位:数字营销的核心,开启职业新高峰,汕尾网站建设推广厂商
什么是seo在线咨询,什么是seo在线咨询服务 ,unreal ai
SEO分类:从基础到进阶,全面解析SEO优化的关键要素,新建设网站排名
文章缩写AI:高效编辑的未来之光
AI免费写文章生成器高效写作新革命
SEO大神如何在激烈的互联网竞争中脱颖而出?,网页设计和网站建设试题
AI缩短短文-提升创作效率,写作新体验,光速写作业ai写作app
用AI写文,开启创作新时代
AI代写文章:高效创作的新风尚
360ai答题-赋能教育,开启智能学习新纪元,ai 果汁
SEO能给企业带来什么价值,seo的影响 ,ai蓝衣美女
目前最火的AI软件有哪些?深度解析必备工具
ChatGPT的破解版:AI世界的新突破,ai无禁忌
seo适用于什么领域,seo适用于什么领域中 ,ai智能翻译写作机器人v1.0
seo需要会什么技术呢,seo需要会什么技术呢知乎 ,红色框ai