仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 476|回复: 7
打印 上一主题 下一主题

[学习教程] ASP网站制作之怎样避免用户反复提交数据

[复制链接]
柔情似水 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 23:10:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQLServer还有更多的扩展,可以用存储过程,数据库大小无极限限制。数据|反复|反复提交这篇文章从语法上看,原作者应当是从甚么中央翻译过去的。


复杂的办理计划:
最复杂的体例就是当用户提交以后,在你的服务器端控件的代码中利用Response.Redirect("selfPage")语句。可是年夜多的数包含我都不利用这类办法。

屡次提交:
请注重:这篇文章并非有关怎样避免在一个页面中屡次提交。这篇文章是教你在提交了哀求以后怎样避免页面举行革新。情形是如许的,当用户提交了按钮以后,终极用户就不克不及再点击提交按钮了。可是如许终极用户仍旧能够经由过程点击扫瞄器的革新按钮来提交数据。假如要避免屡次提交你能够往http://metabuilders.com/网上找一些材料,它那边有一个提交控件能够用。

惯例的办理计划
习气的办理办法是存储Session的ID和当提交时ViewState中存储的SessionID比拟较来避免用户革新屏屏幕。条件你的程序中同意了主动回发,假如不是的话,就得在hiddenfield存储这个变量了。上面给出一个典范的例子。在Page_Load事务中你存储了第一次提交时的SessionID和一个工夫戳。
protectedSystem.Web.UI.WebControls.ButtonSubmitButton;

protectedSystem.Web.UI.WebControls.LabelRefreshID;

privatevoidPage_Load(objectsender,System.EventArgse)

{
if(RefreshID.Text.Length==0)
{
RefreshID.Text=Session.SessionID+DateTime.Now.Ticks.ToString();
}
}


privatevoidButton1_Click(objectsender,System.EventArgse)

{
stringsesToken=(string)Session[FrameworkConst.SYNC_CONTROL_KEYWORD];stringpageToken=RefreshID.Text;
if(sesToken!=null&&sesToken!=pageToken)
{
Response.Write("TheRefreshwasperformedaftersubmit.");
}
else
{
//doyourprocessingheretoavoidRefreshtrap
Response.Write("Theprocessingisdonehere.Disablingsubmit
buttonsothatusercannotperformmultiplesubmit.");
Response.Write("ButstillusercanpeformRefreshonpage.");
}

Session[FrameworkConst.SYNC_CONTROL_KEYWORD]=Session.SessionID+DateTime.Now.Ticks.ToString();
RefreshID.Text=sesToken;
SubmitButton.Enabled=false;

}

分歧的办理计划:
侥幸的事,asp.net供应了一些更复杂的办法。下面的办理计划的弱点是我们要在控钮的事务中本人决意一些逻辑成绩。假想一下,假如在你的办理计划中有成百个要提交的页面,你就得写上很多个如许的逻辑。自界说web控件和HTTPMOdules供应了不异的办理法。你能够将这个控件进在你必要把持的页面上,它就能够起感化了。固然,并非一切的情形都必要的,好比说搜刮页面是同意用户革新的。可是,在页面中有拔出、更新、删除数据库的操纵时,把持革新按钮是相对有需要的。

上面来看一下下面的计划是怎样事情的。
第一步:必要在System.web节中注册HTTPModule模块。

<httpModules>

<addname="SyncHttpModule"type="EAD.Controller.SyncHttpModule,sync"/>

</httpModules>

第二步:要在把持页的页面内放进我们开辟好的控件。

事情道理:
它的事情道理和后面一般讲的是差未几的。只是这里供应了一个通用的办法。这里供应了一种通用的体例。在我看来,假如你有一些好的形式,将年夜年夜的加速你的开辟速率。

我们必要在第一次提交时在Session中存储标志,并在哀求时对照它们是不是分歧。经由过程HTTPhandler,我们在Session中存储标志。有如许的一个事务PreRequestHandlerExecute我们能够经由过程它找到Session,假如是别的事务的话Session是不存在的,好比BeginRequest事务。在这个事务中对照二者的值,假如分歧则证实是Refresh事务。这时候你能够增加本人的处置办法,我通常为将转向一个页面告知用户不克不及重复提交。
privatevoidOnPreRequestHandlerExecute(objectsource,EventArgse)

{

HttpContextcontext=((HttpApplication)source).Context;

string_keyword=FrameworkConst.SYNC_CONTROL_KEYWORD;

stringsesToken=(string)context.Session[_keyword];

stringreqToken=context.Request.Params[_keyword];
//假如没有提交过,则保留Session和标志值

if(reqToken!=FrameworkConst.BYPASS_SYNC_KEYWORD)
{
context.Session[_keyword]=context.Session.SessionID+DateTime.Now.Ticks.ToString();
}
if(reqToken!=null&&reqToken!=sesToken)
{
stringpath=context.Request.ApplicationPath+
&"/Common/SyncControl.aspx?returnUrl="+
&context.Request.Url.AbsolutePath;
context.Server.Transfer(path);
}
}

SyncControl控件将创建一个hiddeninputfield将在HTTPmodule中设置的Session保留起来。


</p>在实现ERP等高端的ASP应用时,用户需要提供核心的经营资料,需要ASP商有很高的信用度。楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。
莫相离 该用户已被删除
沙发
发表于 2015-1-20 06:06:58 | 只看该作者
还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。
乐观 该用户已被删除
板凳
发表于 2015-1-25 22:14:40 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。
冷月葬花魂 该用户已被删除
地板
发表于 2015-1-30 21:13:09 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
愤怒的大鸟 该用户已被删除
5#
发表于 2015-2-6 15:59:53 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
简单生活 该用户已被删除
6#
发表于 2015-2-16 23:57:19 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
山那边是海 该用户已被删除
7#
发表于 2015-3-12 06:58:14 | 只看该作者
从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了
深爱那片海 该用户已被删除
8#
发表于 2015-3-19 18:33:57 | 只看该作者
虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-19 10:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表