__doPostBack未定义

我尝试在我的一个页面上调用__doPostBack时遇到错误,我在项目中的每个页面都使用__doPostBack函数但在此特定页面中我得到了Javascript错误。

我正在寻找互联网,我唯一看到的是,当我有一个unclose标签时,这个错误发生,但我审查该网站,它的确定。

错误:未定义__doPostBack源文件:htt:// localhost:99 / ProjectName / Disable.aspx行:1

任何可能导致回发的ASP.NET WebControl都应自动包含__doPostBack() 。 你听起来像是在你写的一些Javascript中手动调用它。 如果是这样,您将需要包含WebControl,以确保插入到页面上的function。

运行时/客户端错误__doPostBack是未定义的麻烦我几个小时。 网上有很多误导/错误的帮助。 我在default.aspx.cs文件的Page_Load事件中插入了以下代码行,一切正常,在我的系统和GoDaddy的生产中。

 ClientScript.GetPostBackEventReference(this, string.Empty); 

如果页面没有导致回发的控件,__ doPostBack()将不会作为函数定义输出。 覆盖此方法的一种方法是在Page_PreRender()中包含此行:

 this.Page.ClientScript.GetPostBackEventReference(, string.Empty); 

该函数返回一个调用__doPostBack()的字符串; 但也强制页面输出__doPostBack()函数定义。

这就是我发生这种情况的原因:我不小心忘记了脚本标签必须始终有结束标签:

  

我更正了脚本标签:

  

和理智回来了。

只需将此代码添加到.aspx即可

   

__doPostBack工作人员

在页面加载中写下此代码

ClientScript.GetPostBackEventReference(this,“”);

尝试调用RegisterRequiresPostBack方法。 它应该使ASP.NET运行时包含__doPostBack代码。

当我编写自己的页面代码并忘记在表单元素上放置runat="server"时,我遇到了这个问题。

基本上发生了什么是有2个缺少html隐藏元素“eventtarget”和“eventargument”,以及缺少函数“__doPostBack”。

DOM中缺少这些。

我尝试了为此列出的所有修复程序,但都没有。 但是,使用jquery和javascript的组合有一个不显眼的解决方案。 将此文件添加到您的javascript文档准备就绪,然后您即可参加比赛(这比在您的服务器上安装.net framework 4.5要快得多,不过如果你可以安装4.5那就可以了):

 if ($('#__EVENTTARGET').length <= 0 && $('#__EVENTARGUMENT').length <= 0) { $('#YOUR_ASPNET_FORMID').prepend(''); } if (typeof __doPostBack == 'undefined') { __doPostBack = function (eventTarget, eventArgument) { object var theForm = document.forms['YOUR_ASPNET_FORMID']; if (!theForm) { theForm = document.YOUR_ASPNET_FORMID; } if (!theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); } }; } 

我知道有些人说安装4.5修复了这个问题。 我肯定会推荐。 但是,如果你像我一样在.net 4中使用cms系统在企业面向公众的网站上工作,这可能只是一个更简单的解决方案,而不是可能引入通过更新平台创建的新错误。

我的问题的解决方案: IIS ASP.NET Webforms根据用户代理字符串生成网页

我的IIS没有IE11浏览器的定义,所以它默认为一个非常简单的浏览器配置文件,甚至不支持JavaScript。

  • 短期解决方案:在兼容模式下运行浏览器。
  • 中期解决方案:部署.Net Framework 4.5.1,其中包含IE11浏览器配置文件定义。

另一种方法: 设置IE11 Browser definiton文件

我知道自从这个post活跃起来已经有一段时间了,但是我会为将来出现的人添加另一个花絮。

ClientScriptManager类提供了几种方法,可以更好地处理JavaScript回发。 特别是GetPostBackClientHyperlink例程。 它返回一个字符串,然后您可以将其分配给元素的onclick客户端事件。 每次使用此方法时,都会自动生成__doPostBack例程和任何必要的隐藏表单字段,而且您不必自己编写JavaScript。 例如,我在Page_Load中有这个:

 lnkDeactivate.Attributes("onclick") = ClientScript.GetPostbackClientHyperlink(lnkDeactivate, "deactivate") 

在这种情况下,ClientScript是页面自动提供的ClientScriptManager对象实例…我没有实例化它。 在回发后,我使用此代码来检测事件:

 If Not String.IsNullOrEmpty(Request("__EVENTARGUMENT")) AndAlso Request("__EVENTARGUMENT") = "deactivate") Then '-- do somthing End If 

我确信有更好/更清洁的方法来解决这个问题,但我希望你能够了解它背后的想法。

  this.Page.ClientScript.GetPostBackEventReference(, string.Empty); 

这个技巧对我有用。 仍然会想知道它为什么不渲染…

谢谢!

我今天遇到了这个问题,但我找不到任何解决方案,不幸的是包括你的。 因此,如果有人读到这个并且它不起作用,请试试这个

http://you.arenot.me/2010/11/03/asp-net-__dopostback-is-not-defined/

干杯虽然帮助我完成了解决问题的过程!

我得到这个是因为我的脚本在一个被“处理”的Iframe里面(这是一个关闭的Telerik“窗口”)。 在我的iframe中定义_dopostback()的代码消失了,但是在我的iframe中调用_dopostback()的代码仍然存在。 喜欢那个JavaScript!

当我点击LinkBut​​ton时,我得到了这个。 通过向标记添加OnClick="LinkButton2_Click"解决了这个问题。

这个复古线程的另一个补充……

我在使用JQuery Mobile开发网站时遇到了这些症状,结果发现它是由我所关注的链接引起的,没有设置rel="external"属性的受影响页面。

这意味着JQuery通过AJAX加载新页面的内容,并将它们“注入”到当前页面,而不是重新加载整个内容,因此在整页刷新之前不会出现所需的回发javascript。

旧问题但最近回答:如果您有ScriptManager ,请检查EnablePartialRendering是否已启用。 如果是这样,禁用它,我不知道为什么这是一个问题……

我有这个问题,有时它只是愚蠢。 我把它写成带有小写’b’的__doPostback,它应该是带有大写’B’的__doPostBack。

我在我的脚本中使用此方法,包括asp.net格式:

 main form id sample:  
// myscript.js in java script function mypostboack: function () { $('#frmPost').context.forms[0].submit() }

对我来说,“__ doPostBack”并不适用于所有页面,因为我使用较新版本的Visual stdio编译了我的项目,然后我双击解决方案资源管理器中的属性,并将“目标框架”从.Net framework 4.0更改为.Net framework 3.0,之后重建项目,它的工作。

我有这个错误,我通过插入解决它:

 
 lnkDeactivate.Attributes("onclick") = ClientScript.GetPostbackClientHyperlink(lnkDeactivate, "deactivate") 

将我的服务器端控件包装在一个form元素中,并使用runat="server"属性为我工作。 根据asp环境,应该只有一个带有runat="server"属性的form元素,否则可能会发生一些严重的问题。

 

它找不到__doPostBack函数错误。 在页面中放置一个按钮并设置其usersubmitbehavior = false,然后运行并查看viewsource,您将在页面中自动添加__doPostBackfunction。

现在放置你想要回发的html按钮并通过设置onclick =“__ doPostBack(’mybut’,’save’)”来调用__doPostBack函数。

现在,您的html按钮所需的__doPostBack函数由上面的按钮给出。

对我来说,页面中缺少以下内容: