今天先来解决一下昨天留下的问题。

首先是“只能提交一次的按钮”,在ff中history.back()后按钮仍然是disabled状态。这个问了很久都没有答案,于是自己试啊试,发现在ff中history.back(),页面不会执行onload,即停留在最后提交的状态,而ie会在history.back()后执行onload,但这是浏览器的问题,估计也没办法。垂死挣扎,正要放弃之际,突然发现成功了,立即看看是哪里问题。最好发现,如果在页面中写一个onunload的函数,即使是空的,只要不是null,那么ff在history.back()之后就会执行onload。太好了!虽然是误打误撞,也不知道为什么,反正是解决了,于是修改如下:

    /**//// <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;");

            if (!string.IsNullOrEmpty(_textonclick)) temp.Append("this.value=\"").Append(_textonclick).Append("\";");

            //this is for the ff
            temp.Append("if(null==window.onunload) window.onunload = function(){};");

            temp.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; }
        }
    }

测试也通过,太好了,先解决了一个问题。

接下来是多个提交按钮时设置默认提交按钮的问题。baidu了一下,发现用DefaultButton可以设置默认提交按钮。于是使用并查看代码,发现ms是用一个WebForm_FireDefaultButton这样的js来修改默认提交按钮的。又baidu一下,发现可以直接在客户端调用这个函数,先试一下,真的可以。于是修改“能定义默认提交按钮的TextBox”如下:

    /**//// <summary>
    /// 能定义默认提交按钮的TextBox
    /// </summary>
    public class TextBoxSubmit : TextBox
    {
        private Button _buttonsubmit;

        protected override void Render(HtmlTextWriter writer)
        {
            if (_buttonsubmit != null)
            {
                this.Attributes["onkeypress"] += "return WebForm_FireDefaultButton(event, '" + _buttonsubmit.ClientID + "');";
            }

            base.Render(writer);
        }

        public Button ButtonSubmit
        {
            set { _buttonsubmit = value; }
        }
    }

再测试,奇怪,怎么又不可以了。打开源码一看,没什么问题啊。对比一下刚才成功的代码,发现少了WebResource.axd 这个文件的调用。奇怪怎么刚才就有,现在就没了。在找一下原因,原来刚才我使用了DefaultButton,这样才会自动调用这个文件,但我是自己定义的,系统不知道我需要这个文件。于是到网上找一下怎么手动调用这个文件,但没找到,郁闷,只好设一个DefaultButton装一下样子啦,希望以后能找到方法。经过测试,通过!终于解决了两座大山。

接下来做一下会员信息显示的页面吧,其实现在也没什么信息可显示的。
 

再整理一下,明天继续吧。

转载于:https://www.cnblogs.com/cloudgamer/archive/2008/01/25/1052265.html

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

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

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

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

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

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

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

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

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

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

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

  6. 我来做百科(第六天)

    今天先做一个功能是根据传递参数跳转的页面.根据传递的mode参数判断跳转到进入词条还是搜索词条,以后可能还会添加tag的搜索. 接着就到会员后台了.先想想怎么设计,现在大概能做的栏目有:"我 ...

  7. 一天一天学做外挂@第八天-门当户对分清楚[武林外传]

    如果你认真的学习过前七篇的内容,并且在原内容的基础上去延伸,你一定可以编写出一个不错的程序了.它可你帮助你实现诸如:显示信息.自动加血.自动选怪.自动攻击.自动状态.物品过滤.简单游戏修改等功能.当然 ...

  8. 百度百科里的个人介绍是怎么做上去的,人物百度百科词条创建

    百度百科里的个人介绍都是怎么做上去的,是人工做的百度百科词条,还是机器自动上传的百度百科词条呢?目前来说,人物百度百科词条都是人工做上去的,而且现在百度百科对个人介绍的人物词条要求都是比较严格的.如果 ...

  9. 百度百科怎么引流?如何进行百度百科推广?百度百科推广怎么做?

    百度百科是百度推出的一部分内容开放.自由.平等的网络百科.目的就是可以覆盖所有领域的中文信息平台.而在营销方面,白客营销则是企业建立品牌或知名度的一种网络营销方法.那么百度百科引流要怎么做呢? 一.核 ...

  10. 电销机器人百度百科_从做百度百科看站长百态

    凡是网站推广人员,都知道百度百科的重要性,百度百科自身的权威性决定了做百科的困难性,也正是其权威性决定了推广者知难而进的必然性,那真是明知山有虎,偏向虎山行,八仙过海各显神通. 让利宝是一个草根站长, ...

最新文章

  1. Linux下的softlink和hardlink(转)
  2. 重启部署在Linux系统下的tomcat服务
  3. Visual Studio 智能提示功能消失解决办法
  4. 银河麒麟svn: E215000: GNOME Keying被锁定,并且我们处于非交互方式
  5. ssm使用全注解实现增删改查案例——DeptServiceImpl
  6. 深度学习第二课--图像识别与KNN
  7. 钉钉老版本下载3.31_钉钉3.3.1老版本官方下载-钉钉3.3.1旧版本PC版官方版-东坡下载...
  8. 为什么使用3msip2协议_TCP协议专场
  9. 数据库管理工具DBeaverEE 22 for Mac企业版
  10. dts directshow filter_DTS是什么?详解来了
  11. 值得推荐的C/C++框架和库 转
  12. Winserver普通域用户账户无权限启动停止系统服务(启动停止按钮是灰色)
  13. 七本前端(javascript、css)最著名工具书免费下载
  14. Qt获取本地ip地址
  15. 支付宝芝麻信用免押金领取POS机、信用免押租赁系统开发
  16. Ubuntu 18.04 中Chrome浏览器安装与使用
  17. JAVA新手,开始起航~~
  18. 资料:成为全栈dApp开发者的学习计划
  19. 16进制数之间的加法
  20. 研究生英语复习(一)

热门文章

  1. 05 CardView的基本使用
  2. ubuntu安装完无法用xshell,远程链接
  3. 地址解析协议ARP:ARP欺骗
  4. 信息系统项目管理系列之六:项目范围管理
  5. ISA发布邮件服务器
  6. abstract class和interface
  7. inux快速修改文件夹及文件下所有文件与文件夹权限
  8. vuex使用及自定义Vue指令vue-permission
  9. 堪称神级的Spring Boot手册,从基础入门到实战进阶
  10. 厉害了!JMeter 模拟超过 5 万的并发用户!