来一篇关于NET的__doPostBack办法报错: 工具不撑持此属性或办法的办理办法
可怜的程序员,还是逃不出移植的命运!明天在完成功效:"在保留数据之前,必要先将数据传送到数据库中举行逻辑考证,假如考证未经由过程,则必要给出用户一个能够选择“是”与“否”的提醒框,假如用户选择了“是”,那末从头保留数据,不然保持保留数据"时碰到了这个成绩,由于这个功效应当也是人人常常会碰着的问是,以是这里也一并解说下我的完成办法。起首我是在保留办法中举行逻辑考证,好比保留办法为lbtnSave_Click(objectsender,EventArgse),那末该办法的代码以下:
protectedoverridevoidlbtnSave_Click(objectsender,EventArgse)
{
if(Request.Form["__EVENTARGUMENT"]=="true")
{
实行保留办法
}
else
{
//这里是逻辑考证代码
if(考证经由过程)
{
实行保留办法
}
else
{
//考证欠亨过,则实行页面上的CheckBalanceDate办法,CheckBalanceDate是一个js办法。
ScriptManager.RegisterStartupScript(Page,Page.GetType(),"toopBalanceDate","CheckBalanceDate("+行号+")",true);
}
}
}
CheckBalanceDate办法以下:
functionCheckBalanceDate(number){
if(confirm("第"+number+"行数据的结算日期年夜于付款日期,是不是持续保留?")){
__doPostBack(ctl00$lbtnSave,true)};
}
}
从这里我们就能够分明下面的lbtnSave_Click办法中的if(Request.Form["__EVENTARGUMENT"]=="true")判别是起甚么感化了。Request.Form["__EVENTARGUMENT"]=="true",则申明此次回发是用户点了断定后回发还服务器,以是间接实行保留办法。假如Request.Form["__EVENTARGUMENT"]!="true",则申明用户是点击了“保留”按钮举行回发的,以是必要实行判别逻辑。
到这里,仿佛就已完成了我要的功效了,可是页面在实行时,会报出:
毛病:工具不撑持此属性或办法
的毛病,跟踪到堕落的源,发明是以下代码报错了:
functionWebForm_OnSubmit(){
if(typeof(ValidatorOnSubmit)=="function"&&ValidatorOnSubmit()==false)returnfalse;;if(!ctl00_ContentPlaceHolder_Content_grid_div.prepareData()){returnfalse;};
returntrue;
}
下面的代码为asp.net主动天生的页面考证js,估量是由于这个办法中的某个工具还将来的及创立,就已被挪用了。以是我将CheckBalanceDate办法复杂修正了一下便可,修正后的代码以下:
functionCheckBalanceDate(number){
if(confirm("第"+number+"行数据的结算日期年夜于付款日期,是不是持续保留?")){
window.setTimeout(function(){__doPostBack(ctl00$lbtnSave,true)},0);
}
}
window.setTimeout办法用于在指定的毫秒数后挪用函数或盘算表达式,即延时实行__doPostBack办法。
注重:即便修正了CheckBalanceDate办法,页面大概还会报出以下毛病:
回发或回调参数有效。在设置中利用<pagesenableEventValidation="true"/>或在页面中利用<%@PageEnableEventValidation="true"%>启用了事务考证。出于平安目标,此功效考证回发或回调事务的参数是不是来历于最后出现这些事务的服务器控件。假如数占有效而且是预期的,则利用ClientScriptManager.RegisterForEventValidation办法来注册回发或回调数据以举行考证。
这个毛病的办理办法就很复杂了,只需在Page的头部增添EnableEventValidation="false"指令便可。我有个同学,他是搞Java的,他给我说“Java不是效率低,而是速度慢。”,我不是搞Java的,我实在想不透这句话的含义,难道执行速度不就是效率低吗?难道执行速度慢还成效率高了? 由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。 Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。 比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。 我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。 但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。 对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。
页:
[1]