在我的一个页面上调用__doPostBack时出现了错误,我在项目中的每个页面都使用__doPostBack函数,但是在这个特定的页面中,我遇到了这个Javascript错误。
我在互联网上搜索,唯一的结果是说当我有一个未关闭的标签时会发生这个错误,但是我检查了整个网站,没有问题。
错误:__doPostBack未定义 源文件:htt://localhost:99/ProjectName/Disable.aspx 行:1
在我的一个页面上调用__doPostBack时出现了错误,我在项目中的每个页面都使用__doPostBack函数,但是在这个特定的页面中,我遇到了这个Javascript错误。
我在互联网上搜索,唯一的结果是说当我有一个未关闭的标签时会发生这个错误,但是我检查了整个网站,没有问题。
错误:__doPostBack未定义 源文件:htt://localhost:99/ProjectName/Disable.aspx 行:1
对我来说,问题出在我使用了一个自定义的 User-Agent 头部,其内容为:User-Agent: This is a Test, please ignore
。
这是因为 IIS ASP.NET Webforms 根据 User-Agent 字符串生成网页。
要解决这个问题,我需要包含浏览器类型,并在末尾添加一条消息,例如:
User-Agent: Mozilla/5.0 (X11; Linux x86_64) Chrome/75.0.3770.80 (This is a Test, please ignore)
页面又开始正常运行了。
我知道这个帖子已经很久没有活跃了,但是我会为那些未来的读者添加一些小贴士。
ClientScriptManager类有几个可用的方法,使得处理JavaScript postbacks更加方便。特别是GetPostBackClientHyperlink例程。它返回一个字符串,然后你只需要将其分配给元素的onclick客户端事件即可。每次使用此方法时,__doPostBack例程和任何必要的隐藏表单字段都会自动生成,而且你不必自己编写JavaScript代码。例如,我在Page_Load中有这样的代码:
lnkDeactivate.Attributes("onclick") = ClientScript.GetPostbackClientHyperlink(lnkDeactivate, "deactivate")
If Not String.IsNullOrEmpty(Request("__EVENTARGUMENT")) AndAlso Request("__EVENTARGUMENT") = "deactivate") Then
'-- do somthing
End If
我相信有更好/更干净的方法来连接它,但我希望你能理解它背后的思想。
this.Page.ClientScript.GetPostBackEventReference(<a control>, string.Empty);
这个技巧对我很有用。虽然我仍然想知道为什么它没有渲染...
谢谢!
lnkDeactivate.Attributes("onclick") = ClientScript.GetPostbackClientHyperlink(lnkDeactivate, "deactivate")
runat="server"
属性的form
元素包装起来对我很有效。根据ASP环境,应该只有一个带有runat="server"
属性的form
元素,否则可能会出现一些严重问题。<form runat="server" id="form1">
<!-- Server side controls go here -->
</form>
我遇到了这个错误,通过插入以下内容解决了它:
<form runat="server" style="display: none"></form>
虽然这是一个老问题,但最近有了答案:如果你有一个 ScriptManager
,请检查是否启用了 EnablePartialRendering
。如果是,请禁用它,我不知道为什么会出现这个问题...
我曾经遇到过这个问题,有时候只是因为自己太蠢了。我把它写成了小写字母'b'的__doPostback,而实际上应该是大写字母'B'的__doPostBack。
我今天也遇到了这个问题,但是我找到的所有解决方案都不起作用,包括你的。所以如果有人阅读这篇文章并且它对他们不起作用,请尝试这个方法。
http://you.arenot.me/2010/11/03/asp-net-__dopostback-is-not-defined/
感谢你帮助我找出问题所在的过程!
对我来说,"__doPostBack" 在所有页面中都无法工作,因为我使用了比较新的 Visual Studio 版本编译了我的项目,然后我在解决方案资源管理器中双击属性并将 "目标框架" 从 .Net Framework 4.0 更改为 .Net Framework 3.0,之后重新构建项目,它就可以工作了。