******************** Редактировать 2 **********************
Я понял проблему ... Но мне не нравятся последствия. Ранее я тестировал мобильное приложение для iPhone и использовал плагин для маскировки пользовательского агента Firefox String как iPhone.
.Net фактически НЕ генерировал требуемый код для постбэков на основе только этой информации.
Однако мне это не нравится, поскольку, поскольку iPhone и другие мультимедийные устройства могут интерпретировать javascript, ASP.net нарушает работу любого приложения, использующего сгенерированный сервером javascript.
Итак, если сообщество разрешит это ... Я бы хотел изменить свой официальный вопрос на ... Почему ASP.net не будет генерировать javascript для определенных браузеров и как я могу отключить эту "функцию".
*************** End Edit 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>
Codebehind:
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=" />
Сохранение веб-страниц на рабочем столе и открытие в блокноте показывает то же самое ...