********************编辑 2************************ 我发现了问题所在。 ..但我不喜欢其中的含义。我之前正在测试我们的 iPhone 目标移动应用程序,并使用插件将 Firefox 的用户代理字符串屏蔽为 iPhone。
.Net 实际上并没有仅根据那条信息生成回发所需的代码。
然而我不喜欢这样,因为 iPhone 和其他多媒体设备可以解释 javascript,ASP.net 正在破坏任何依赖服务器生成的 javascript 运行的应用程序。
因此,如果社区允许...我想将我的官方问题更改为...为什么 ASP.net 不会为特定浏览器生成 javascript 以及如何关闭此“功能”。
*************** 结束编辑 2 ***************
我有一个奇怪的问题。我在工作时将一些工作代码从远程主机复制到了我的计算机上。当我尝试使用该页面时,我收到了一个 javascript 错误
__doPostBack is not defined
javascript:__doPostBack('ctl00$ContentPlaceHolder1$login','')()()
当我很少输出页面源时,果然没有服务器端生成的javascript。
我尝试创建一个简单的页面:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="jsTest.aspx.vb" Inherits="_jsTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:TextBox ID="tbTest" runat="server"></asp:TextBox><br />
<asp:LinkButton ID="linkTest" runat="server">LinkButton</asp:LinkButton>
</form>
</body>
</html>
代码隐藏:
Partial Class _jsTest
Inherits System.Web.UI.Page
Protected Sub linkTest_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles linkTest.Click
Response.Write(tbTest.Text)
End Sub
End Class
得到同样的错误。
我试过重新启动(嘿,它工作了一半),从 App_Code、global.asax 和 web.config 中清除了所有内容,添加了一个带有 autopostback=true 的文本框......我没有想法。
任何人都可以阐明这里发生的事情吗?
**************更多信息************** 我刚刚在 IE 中再次尝试了一切,它按预期工作,页面源显示:
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTkxNTA2MDE2NWRkxhZMwlMVwJprcVsvQLJLrTcgaSM=" />
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<div>
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwK20LZAAuzRsusGAsz0+6YPxxO+Ewv1XsD5QKJiiprrGp+9a3Q=" />
</div>
虽然 Firefox 中的源代码仅显示:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTkxNTA2MDE2NWRkxhZMwlMVwJprcVsvQLJLrTcgaSM=" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwK20LZAAuzRsusGAsz0+6YPxxO+Ewv1XsD5QKJiiprrGp+9a3Q=" />
将网页保存到桌面并在记事本中打开显示同样的事情......