今天先把会员的部分做了吧。主要是“我的贡献”和“我的评论”,两个列表。

先是“我的贡献”,给内容添加一个根据会员查找方法就是了。

至于“我的评论”,也是给评论添加一个根据会员查找方法,差不多。

接着先整理一下代码吧。先是给“退出”写一个控件,在LinkButton的OnClick事件里添加退出功能和跳转功能。还有一个问题困扰我很久的,就是怎么防止重复提交。对于刷新重复提交那种我都是提交成功后直接Redirect页面,还有另一种比较麻烦的是网络延迟造成的多次点击提交。开始我是在按钮控件OnClientClick上disabled掉按钮,到发现这样提交后不会执行按钮的OnClick事件,于是到处问,终于在csdn那里找到答案,laogui327 告诉我这样:

Button1.Attributes.Add("onclick",   "this.value='正在提交中,请等待……';this.disabled=true;"   +   this.GetPostBackEventReference(Button1));

太好了,终于找到在按钮本身就能解决的方法,感谢!

于是根据这个写了个只能提交一次的控件:

    public class ButtonSubmitOnce : Button
    {
        private string _textonclick = "正在提交中,请等待……";

        protected override void Render(HtmlTextWriter writer)
        {
            this.OnClientClick += "this.value=\"" + _textonclick + "\";this.disabled = true;" + Page.GetPostBackEventReference(this);

            base.Render(writer);
        }

        public string TextOnClick
        {
            set { _textonclick = value; }
        }
    }

不知有没有其他办法,但这是我找到最好的了。

立即在发表评论那里用一下,ok!放一个验证控件吧,但问题来了,验证的程序居然会放到自己定义的代码后面,即:

<input type="submit" name="ctl00$cphContent$btnAdd" value=" 添 加 " onclick="this.value=&quot;正在提交中,请等待……&quot;;this.disabled = true;__doPostBack('ctl00$cphContent$btnAdd','');WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$cphContent$btnAdd&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" id="ctl00_cphContent_btnAdd" class="btn" />

Faint!搞了一阵,也不知道怎么能把自定义的OnClientClick放得更后一点了,郁闷。看来验证控件不能用了,还有我还有js,不气馁。于是在自定义的ButtonSubmitOnce上再添加一点东西:

    /**//// <summary>
    /// 只能提交一次的按钮
    /// </summary>
    public class ButtonSubmitOnce : Button
    {
        private string _textonclick = "正在提交中,请等待……";
        private string _clientcheck;

        protected override void Render(HtmlTextWriter writer)
        {
            StringBuilder temp = new StringBuilder();

            temp.Append(this.OnClientClick);
            if (!string.IsNullOrEmpty(_clientcheck)) temp.Append("if(!").Append(_clientcheck).Append(") return false;");
            temp.Append("this.value=\"").Append(_textonclick).Append("\";this.disabled = true;").Append(Page.GetPostBackEventReference(this));
            this.OnClientClick = temp.ToString();

            base.Render(writer);
        }

        public string TextOnClick
        {
            set { _textonclick = value; }
        }

        public string ClientCheck
        {
            set { _clientcheck = value; }
        }
    }

这样给ClientCheck赋一个返回bool的检测js函数就可以了。

但为什么提交这么一点东西会这么慢啊,带着疑问打开源码一看,一大串的VIEWSTATE,怪不得。怪不得老赵某篇文章中说不用VIEWSTATE啦,我也要试一下。这一页会用到VIEWSTATE的地方就是发表评论嘛,因为会在后台检测数据,有错的话会回到原来那页显示出错信息。像以前asp那样用一个alert和history.back()就可以了嘛。一切准备就绪,在ie测试,没问题,不错嘛,在ff测试,出问题了。页面后退后按钮仍然是disabled状态,这怎么办啊。难道要放弃其中一个?搞了很久没搞好,之后又用回VIEWSTATE,痛苦,崩溃,谁好心告诉我怎么搞啊。

还有一个问题是多个提交按钮时设置默认提交按钮的问题。我问了一下,有人告诉我解决方法是:

<asp:TextBox ID="TextBox1" runat="server"  onkeydown="if(event.keyCode==13){document.getElementById('Button1').click();}"></asp:TextBox>

在onkeydown中处理,但这样视觉上还是有问题,因为onfocus会有一个视觉效果的,所以想能不能用onfocus解决。我想了个方法,原理是当textbox取得焦点,立即给button焦点,再把焦点返回给textbox。貌似可以,试一下,发现不行,原来实际上是一个死循环。郁闷了一下,看来还是用大伙的方法吧。试了一下还是不行,因为enter的时候虽然是执行了onkeydown的程序,但同时默认的提交也触发了。痛苦,崩溃,谁好心告诉我怎么搞啊。

一轮折磨之后,还是先休息一下啦。

转载于:https://www.cnblogs.com/cloudgamer/archive/2008/01/24/1050805.html

我来做百科(第七天)相关推荐

  1. CDN百科第七期 | 关于CDN的原理、术语和应用场景那些事

    简介:关于CDN,想必你一定看过很多官方的解释.今天,CDN百科第七期,将用一篇3844字的文章,来带你了解CDN的诞生.术语.原理.特征以及应用场景,看完这篇文章,相信你将会对CDN这项互联网基础设 ...

  2. 我来做百科(第二十天) D

    有朋友(注册会员)告诉我,她忘记密码了.对哦,要做一个"找回密码"的系统才行. 又找了一下资料,看到一篇不错的文章,介绍了"选择何种方式帮助用户找回密码",他的 ...

  3. 我来做百科(第九天)

    今天做一下后台吧.先是页面,以前用的太丑了,还是另找一个吧.网上找了一下,看到有人说动网那个后台不错,于是找来看看.搞了一轮,终于打开后台页面,一看,页面是可以啦,但作为后台是太繁杂了吧.于是改啊改, ...

  4. 我来做百科(第二十天) C

    我看到百度贴吧的评论,在会员后台点击评论后会自动跳到该评论所在的页码的页面,而不是简单的锚.我也要做做看.在csdn问了问,估计直接根据id直接取分页数据的话会比较麻烦,所以决定做法是先找到评论所在页 ...

  5. (完结)Unity游戏开发——新发教你做游戏(七):Animator控制角色动画播放

    文章目录 一.前言 二.Animator状态机组织 三.过渡条件 四.用代码设置过渡条件,触发动画播放 五.CharacterAniLogic.cs完整代码 一.前言 文章列表 Unity游戏开发-- ...

  6. 用Mediawiki做百科网站资源大参考

    MediaWiki简易安装教程 **关于mediawiki 一些好的资料: http://codex.wordpress.org.cn/Mediawiki%E5%BB%BA%E7%AB%99%E7%B ...

  7. 做自己——鬼脚七自媒体第一季

    <做自己--鬼脚七自媒体第一季> 基本信息 作者: 鬼脚七 出版社:人民邮电出版社 ISBN:9787121207105 上架时间:2013-6-25 出版日期:2013 年7月 开本:1 ...

  8. 每周一书-《做自己-鬼脚七自媒体第一季》

      首先说明,本周活动有效时间为2016年10月11日到2016年10月16日.本周为大家送出的书是由电子工业出版社出版,鬼脚七著<做自己-鬼脚七自媒体第一季>. 鬼脚七 何许人也?当然不 ...

  9. 我来做百科(第一天)

    近来一个朋友跟我说想他做一个web2.0的网站,突然自己也想做一个,到百度找找什么叫web2.0吧.打入"web2.0"搜索,没什么头绪,还是先到知道看看,点第一个,是百科,哦,很 ...

  10. 用python的tkinter做游戏(七)—— 双人射击游戏Demo(类的应用) 篇

    不知不觉这已经是第七篇文章了,今天来谈谈python中类(class)在游戏中的应用. 老规矩,先展现一下之前的几篇博文: 用python自带的tkinter做游戏(一)-- 贪吃蛇 篇 用pytho ...

最新文章

  1. It--网络生涯去向何方?
  2. jQuery操作标签--样式、文本、属性操作, 文档处理
  3. Oracle中类似于isql或osql的命令行工具
  4. RabbitMQ系列(一)RabbitMQ在Ubuntu上的环境搭建
  5. iphone降级_ios14.2怎么降级到14.1 ios14.2耗电严重吗[多图]-热门资讯
  6. 基于xml技术的操作
  7. 本地项目怎么推送到码云_【重谈npm】当下载一个项目到本地执行npm install报错时应该怎么办...
  8. python连接不上数据库_绕不过去的Python连接MySQL数据库
  9. 80x86 register and memory mode
  10. 大工13秋 c/c++语言程序设计 在线作业3,大工19秋《JavaScript基础教程与应用》在线作业3【满分答案】...
  11. 为什么++ [[]] [+ []] + [+ []]返回字符串“ 10”?
  12. ArcMAP 空间连接和相交工具使用
  13. python选择排序代码_Python 数据结构与算法——选择排序(迭代版、递归版)
  14. vcf构建idx索引
  15. excel如何提取图片中的文字?
  16. 【LeetCode系列】数的奥秘之幂数与完全平方数
  17. 【Azure 应用服务】NodeJS Express + MSAL 实现API应用Token认证(AAD OAuth2 idToken)的认证实验 -- passport.authenticate()
  18. 为什么用企业微信做运营
  19. 判断三角形 java_java中判断是否三角形的方法
  20. 营销玩法|世界杯期间产品如何提高互动性?

热门文章

  1. 管理感悟:说说NWT裁员的经历及关键错误
  2. python文本关联分析,详解Python文本操作相关模块
  3. matlab卷积反投影,卷积反投影法图象重建.pdf
  4. java screenframe_一个关于JFrame的问题
  5. 根据后台日志文件查找错误_linux中find命令根据文件类型来查找
  6. 谈谈计算机专业职业技能,计算机专业职业技能论文
  7. pcb设计单点接地示意图_EMC设计之接地、PCB布局布线、屏蔽设计
  8. 双目摄像头的帧同步输入fsync信号_读源码长知识 | Android卡顿真的是因为”掉帧“?...
  9. RabbitMQ快速入门python教程
  10. Notepad++常用插件