Подтвердить что ты не робот

__doPostBack не определен

Я получаю эту ошибку при попытке вызвать __doPostBack на одной из моих страниц, каждая страница, которую я имею в проекте, использует функцию __doPostBack, но на этой конкретной странице я получаю эту ошибку Javascript.

Я смотрел в Интернете, и единственное, что я прочитал, это то, что эта ошибка возникает, когда у меня есть ярлык unclose, но я просматриваю сайт и все в порядке.

Ошибка: __doPostBack не определен Исходный файл: htt://localhost: 99/ProjectName/Disable.aspx Линия: 1

4b9b3361

Ответ 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>