__doPostBack не определен
Я получаю эту ошибку при попытке вызвать __doPostBack на одной из моих страниц, каждая страница, которую я имею в проекте, использует функцию __doPostBack, но на этой конкретной странице я получаю эту ошибку Javascript.
Я смотрел в Интернете, и единственное, что я прочитал, это то, что эта ошибка возникает, когда у меня есть ярлык unclose, но я просматриваю сайт и все в порядке.
Ошибка: __doPostBack не определен
Исходный файл: htt://localhost: 99/ProjectName/Disable.aspx
Линия: 1
Ответы
Ответ 1
__doPostBack()
должен автоматически включаться любым ASP.NET WebControl, который может вызвать сообщение. Похоже, вы называете это вручную в некотором Javascript, который вы написали. Если это так, вам нужно будет включить WebControl, чтобы убедиться, что функция вставлена на страницу.
Ответ 2
Ошибка времени выполнения/клиентская сторона __doPostBack
составляет undefined в течение нескольких часов. В сети было много вводить в заблуждение/некорректная помощь. Я вставлял следующую строку кода в событие Page_Load
файла default.aspx.cs
, и все работало нормально, в моей системе и в производстве с GoDaddy.
ClientScript.GetPostBackEventReference(this, string.Empty);
Ответ 3
Если на странице нет элемента управления, который вызывает обратную передачу, __doPostBack() не будет выводиться как определение функции. Один из способов переопределить это - включить эту строку в свой Page_PreRender():
this.Page.ClientScript.GetPostBackEventReference(<a control>, string.Empty);
Эта функция возвращает строку, вызывающую __doPostBack(); но также заставляет страницу выводить определение функции __doPostBack().
Ответ 4
Вот почему это происходило со мной: я случайно забыл, что теги script всегда должны иметь закрывающие теги:
<script src="/Scripts/appLogic/Regions.js" />
Я скорректировал тег script:
<script src="/Scripts/appLogic/Regions.js" type="text/javascript" ></script>
и возвращается здравый смысл.
Ответ 5
Просто добавьте этот код в свой .aspx
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
Ответ 6
__ doPostBack Работы ребята
Запишите этот код в режиме загрузки страницы
ClientScript.GetPostBackEventReference(это, "");
Ответ 7
Попробуйте вызвать метод RegisterRequiresPostBack. Это должно привести к тому, что среда выполнения ASP.NET включает код __doPostBack.
Ответ 8
У меня была эта проблема, когда я написал свой собственный код страницы и забыл поместить runat="server"
в элемент формы.
Ответ 9
Я знаю, что прошло некоторое время, так как этот поток был активным, но я добавлю еще один лакомый кусочек для тех, кто идет в будущем.
В классе 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
Я уверен, что есть лучшие/более чистые способы связать это, но я надеюсь, что вы поймете за этим идею.
Ответ 10
this.Page.ClientScript.GetPostBackEventReference(<a control>, string.Empty);
Этот трюк работал у меня. Все равно хотелось бы знать, почему это не было рендеринг...
Спасибо!
Ответ 11
По существу, происходит то, что есть 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('<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /><input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />');
}
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 исправляют это. Я определенно рекомендовал бы это. Однако, если вы похожи на меня, работая на общедоступном веб-сайте предприятия с помощью системы cms, испеченной в .net 4, это может быть простое решение, в отличие от возможных новых ошибок, созданных при обновлении вашей платформы.
Ответ 12
Решение для моей задачи:
IIS ASP.NET Webforms создает веб-страницы в зависимости от пользовательской строки оператора
У моего IIS не было определения для браузера IE11, поэтому он по умолчанию использовал очень простой профиль браузера, который даже не поддерживает JavaScript.
- краткосрочное решение: запустить браузер в режиме совместимости.
- Среднесрочное решение: Развертывание .Net Framework 4.5.1, которое содержит определения профиля браузера IE11.
Альтернатива: установить файл определения браузера IE11
Ответ 13
У меня была эта проблема только сегодня, но ни одно из решений, которые я нашел, не работал, к сожалению, включая ваши. Поэтому, если кто-то читает это, и он не работает для них, попробуйте это
http://you.arenot.me/2010/11/03/asp-net-__dopostback-is-not-defined/
Приветствую вас за то, что помог мне в процессе разработки того, что пошло не так!
Ответ 14
Я получал это, потому что мой script находился внутри iframe, который был "удален" (это было закрытое окно "Telerik" ). Код, определяющий _dopostback() внутри моего iframe, исчез, но код, вызывающий _dopostback() внутри моего iframe, все еще висел вокруг. Любите, что JavaScript!
Ответ 15
Я получал это, когда я нажимал LinkButton. Решил это, добавив OnClick="LinkButton2_Click"
к разметке.
Ответ 16
Еще одно дополнение к этой винтажной нити....
У меня были эти симптомы при разработке сайта с использованием JQuery Mobile, и выяснилось, что он был вызван ссылкой, которую я следил на затронутой странице, не имеющей на ней атрибут rel="external"
.
Это означало, что JQuery загрузил содержимое новой страницы через AJAX и "ввел" их на текущую страницу, вместо того, чтобы перезагрузить все это, и, следовательно, требуемый JavaScript для обратной передачи не присутствовал до полного обновления страницы.
Ответ 17
Старый вопрос, но последний ответ: если у вас есть ScriptManager
, проверьте, включен ли EnablePartialRendering
. Если да, отключите его, я не знаю, почему это проблема там...
Ответ 18
У меня была эта проблема, а иногда и просто глупость. Я написал его как __doPostback с нижним регистром "b", где он должен был быть __doPostBack с прописным буквой "B".
Ответ 19
Я использовал этот метод в моем script, который включен в форму asp.net:
main form id sample:
<script src="myscript" />
<form id="frmPost" runat="server">
</form>
// myscript.js in java script function
mypostboack: function () {
$('#frmPost').context.forms[0].submit()
}
Ответ 20
Для меня "__doPostBack" не работал на всех страницах, потому что я скомпилировал свой проект с помощью
более новую версию Visual stdio, затем я дважды щелкнул по свойствам в проводнике решений и изменил "Целевую структуру" с .Net framework 4.0 на .Net framework 3.0 и после этого перестроил проект, и он сработал.
Ответ 21
У меня была эта ошибка, и я решил ее, вставив:
<form runat="server" style="display: none"></form>
Ответ 22
lnkDeactivate.Attributes("onclick") = ClientScript.GetPostbackClientHyperlink(lnkDeactivate, "deactivate")
Ответ 23
Функция __doPostBack не найдена. Поместите одну кнопку на страницу и установите ее userubmitbehavior = false, затем запустите и посмотрите viewource, у вас будет автоматически добавлена функция __doPostBack на вашей странице.
Теперь разместите свою собственную кнопку html, с которой вы хотите сделать обратную передачу, и вызовите функцию __doPostBack, установив ее onclick = "__ doPostBack ('mybut', 'save')".
Теперь функция __doPostBack, требуемая для вашей кнопки html, задается указанной выше кнопкой.
Ответ 24
Для меня на странице отсутствовало следующее:
<form runat="server">
</form>