`
cloudgamer
  • 浏览: 61060 次
  • 性别: Icon_minigender_1
  • 来自: 顺德
社区版块
存档分类
最新评论

我来做百科(第七天)

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

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


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


接着先整理一下代码吧。先是给“退出”写一个控件,在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的程序,但同时默认的提交也触发了。痛苦,崩溃,谁好心告诉我怎么搞啊。

一轮折磨之后,还是先休息一下啦。
分享到:
评论

相关推荐

    因特网百科全书 因特网百科全书

    7. **社会影响力**:随着社交媒体的兴起,互联网百科全书的条目经常成为讨论热点,影响公众对各种话题的理解。 然而,互联网百科全书也存在一些问题。例如,任何人都能编辑可能导致信息质量参差不齐,有些条目可能...

    糗事百科项目源码

    糗事百科是一个流行的在线社区,用户在这里分享各种趣闻轶事,这个项目源码对于想要了解此类网站运作原理、学习Web开发或者对糗事百科内部工作机制感兴趣的开发者来说,是非常宝贵的资料。 【描述】提到,这个源码...

    英文维基百科语料库txt(7)

    《英文维基百科语料库txt(7):自然语言处理与人工智能的基石》 英文维基百科语料库是自然语言处理(NLP)领域的重要资源,它为研究者和开发者提供了丰富的文本数据,用于训练和测试各种算法。这份压缩包包含了一...

    2021-2022年收藏的精品资料wikipedia维基百科综述.ppt

    维基百科的发展历程是从2001年1月15日开始的,当时维基百科正式启动,英文维基百科在2001年2月12日达到1,000页,9月7日达到10,000条条目。在计划的第一年,有超过20,000条条目被创建,平均每月1,500条。2002年8月30...

    仿百度百科网站源码

    总的来说,"仿百度百科网站源码"是一个涵盖Web开发多个方面的项目,既可作为学习实践的素材,也适合希望创建自己百科平台的组织和个人。通过深入理解和定制这套源码,你可以建立一个强大且具有互动性的知识分享网站...

    仿糗事百科

    "仿糗事百科"是一个基于网络的幽默社区,它的核心理念是分享日常生活中的趣事、搞笑经历或幽默段子,类似于国内知名的“糗事百科”网站。用户可以在平台上浏览、发布和评论各种有趣的事件,以此来放松心情,增添生活...

    糗事百科本地anroid开发

    【标题】:“糗事百科本地Android开发” 在Android开发领域,构建一个类似“糗事百科”的应用程序是一项有趣的挑战。这个项目旨在模拟“糗事百科”的功能,为用户提供一个平台,可以浏览、分享和评论趣闻轶事。在这...

    电子电路百科全书(第五卷)

    《电子电路百科全书(第五卷)》是一部涵盖了电子电路众多领域的综合性著作,它深入浅出地介绍了多种类型的电路设计和应用。这本书包含了以下几个主要的知识点: 1. 报警电路:报警电路是用于在特定条件下发出警示...

    高仿糗事百科程序源码 免费

    【标题】:“高仿糗事百科程序源码 免费” 这个标题表明提供的是一个模仿知名网站“糗事百科”的程序源代码,并且是免费提供的。对于开发者来说,这是一个很好的学习和参考资源,特别是对想要了解如何构建类似社交...

    仿糗事百科源码

    7. **缓存机制**:为了提高网站性能,源码可能会集成缓存技术,如Redis或Memcached,以减少数据库查询压力。 8. **SEO优化**:为了提升搜索引擎的可见性,源码可能包含了元标签、URL重写等SEO相关功能。 9. **第三...

    2021年C语言上机题库百科园南信大.doc

    7. for循环的执行结果:第7题考查了for循环的执行结果,要求分析for循环的执行过程和输出结果。 知识点:for循环的执行结果、输出结果的分析。 8. 条件语句的使用:第8题考查了条件语句的使用,要求理解条件语句的...

    ios高仿糗事百科客户端

    7. 网络请求:熟悉URLSession或第三方库如Alamofire进行网络请求,获取和解析JSON数据。 8. 模块化开发:了解如何将代码拆分成可重用的模块,提高代码的可维护性和可扩展性。 9. 测试和调试:学习如何使用Xcode的...

    搜狗浏览器拓展插件 全百科网站SEO查询工具webseo.rar

    5. **百度权重**:虽然百度官方并未明确给出权重的概念,但第三方工具通常根据关键词排名和流量来估算网站的权重。此插件能提供这一参考数据,便于用户分析网站的搜索引擎表现。 6. **爱站流量**:爱站网是知名的...

    基于python知识图谱的百科知识问答平台源码数据库.docx

    ### 基于Python知识图谱的百科知识问答平台源码数据库 #### 一、项目背景及意义 在当前互联网高度发达的时代背景下,网络已成为获取信息的重要渠道之一。然而,随着网络信息量的爆炸式增长,如何高效地从海量信息...

    糗事百科电脑客户端 v3.0 夜幕兔版.zip

    1. **实时更新**:糗事百科电脑客户端v3.0能实时同步网站上的最新内容,确保用户在第一时间了解到网络上的热门糗事。 2. **多样化展示**:内容以图文并茂的形式呈现,既有文字描述,也有生动的图片,增强了阅读体验...

    人物百科怎样才能创建成功?

    - 人物百科旨在提供第三方视角的信息,因此,直接或间接的自我宣传内容通常会被拒绝。所有内容应以事实为基础,避免过度吹嘘或自我标榜。 7. **内容的全面性和准确性**: - 成功创建人物百科需要提供人物的基本...

    百科知识搜索系统 Ver 1.0 BETA 版

    程序名称: 百科知识搜索系统 Ver 1.0 BETA 版 软件类别: ASP源码 / 搜索CMS 软件语言: 简体中文 授权方式: 免费版 系统平台: ASP+Access 程序下载: ...

    Android UI-最新版糗事百科布局,带简单数据加载

    在Android开发中,UI设计是至关重要的一环,它直接影响到用户对应用的第一印象和使用体验。本项目"Android UI-最新版糗事百科布局,带简单数据加载"旨在提供一个仿照最新版糗事百科应用的界面布局,并实现数据加载...

    高仿Iphone 糗事百科客户端

    总的来说,"高仿Iphone 糗事百科客户端"是一个涵盖移动应用开发全生命周期的项目,从设计、编码、测试到发布,每个环节都体现了开发者对跨平台用户体验的理解和技术实力。通过分析和学习这样的项目,开发者可以提升...

Global site tag (gtag.js) - Google Analytics