it-roy-ru.com

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

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

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

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

26
jmpena

__doPostBack() должен автоматически включаться любым ASP.NET WebControl, который может вызвать обратную запись. Похоже, вы вызываете его вручную в каком-то написанном вами Javascript. Если это так, вам нужно будет включить WebControl, чтобы убедиться, что эта функция вставлена ​​на страницу.

10
James Curran

Время выполнения/ошибка на стороне клиента __doPostBack не определено, изводит меня на несколько часов. В сети было много вводящей в заблуждение/неправильной помощи. Я вставил следующую строку кода в событие Page_Load файла default.aspx.cs, и все работало нормально, в моей системе и в работе с GoDaddy.

ClientScript.GetPostBackEventReference(this, string.Empty);
35
Don Tato

Если страница не имеет элемента управления, который вызывает обратную передачу, __doPostBack () не будет выводиться как определение функции. Один из способов переопределить это - включить эту строку в ваш Page_PreRender ():

this.Page.ClientScript.GetPostBackEventReference(<a control>, string.Empty);

Эта функция возвращает строку, вызывающую __doPostBack (); но также вынуждает страницу выводить определение функции __doPostBack ().

20
SAGExSDX

Вот почему это происходит со мной: я случайно забыл, что теги скрипта всегда должны иметь закрывающие теги:

<script src="/Scripts/appLogic/Regions.js" />

Я исправил тег скрипта:

<script src="/Scripts/appLogic/Regions.js" type="text/javascript" ></script>

и здравомыслие вернулось.

16
Paul Keister

Просто добавьте этот код в ваш .aspx

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
12
Jose Luis

__doPostBack Работает, ребята

Написать этот код в Page Load

ClientScript.GetPostBackEventReference (this, "");

8
Raghubir Singh

Попробуйте вызвать RegisterRequiresPostBack метод. Это должно сделать среду выполнения ASP.NET включающей код __doPostBack.

4
Atanas Korchev

По сути, происходит то, что отсутствуют 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, это может быть просто более простым решением, в отличие от возможного появления новых ошибок, возникающих при обновлении вашей платформы.

2
user3283145

У меня была эта проблема, когда я написал свой собственный код страницы и забыл поставить runat="server" на элемент формы.

2
rg89

Решение моей проблемы: IIS ASP.NET Webforms генерирует веб-страницы в зависимости от строки агента пользователя

В моем IIS не было определения браузера IE11, поэтому по умолчанию использовался очень простой профиль браузера, который даже не поддерживает JavaScript. 

  • краткосрочное решение: запустить браузер в режиме совместимости. 
  • среднесрочное решение: Развертывание .Net Framework 4.5.1, которое содержит определения профиля браузера IE11.

Альтернатива: установить файл определения браузера IE11

2
Martin Sentker

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

Класс 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

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

1
Justin
 this.Page.ClientScript.GetPostBackEventReference(<a control>, string.Empty); 

Этот трюк сработал для меня. Еще бы хотелось узнать, почему это не рендеринг ...

Спасибо!

1
Troy

У меня была эта проблема только сегодня, но ни одно из найденных решений не сработало, к сожалению, в том числе и ваше. Так что, если кто-то читает это, и это не работает для них, попробуйте это 

http://you.arenot.me/2010/11/03/asp-net-__dopostback-is-not-defined/

Приветствую, хотя, чтобы помочь мне в процессе выяснения того, что пошло не так!

0
Colin Wiseman

у меня была эта ошибка, и я решил ее, вставив:

<form runat="server" style="display: none"></form>
0
Keivan Sabil...

Для меня «__doPostBack» не работал на всех страницах, потому что я скомпилировал свой проект с Более новой версией Visual stdio, затем дважды щелкнул свойства в обозревателе решений и изменил «Целевую платформу» с .Net Framework 4.0 на .Net Framework 3.0. и после этого перестроить проект, и он работал. 

0
Alireza

Старый вопрос, но недавний ответ: если у вас есть ScriptManager, проверьте, включен ли EnablePartialRendering. Если это так, отключите его, я не знаю, почему это проблема там ...

0
gobes

Я получил это, потому что мой сценарий был внутри Iframe, который был «утилизирован» (это было «окно» Telerik, которое было закрыто). Код, определяющий _dopostback () внутри моего iframe, исчез, но код, вызывающий _dopostback () внутри моего iframe, все еще зависал. Люблю этот JavaScript!

0
Josh Mouch
lnkDeactivate.Attributes("onclick") = ClientScript.GetPostbackClientHyperlink(lnkDeactivate, "deactivate")
0
Atul Pawar

Обертывание моих серверных элементов управления в элементе form с атрибутом runat="server" сработало для меня. Согласно среде asp, в нем должен быть только один элемент form с атрибутом runat="server", в противном случае может возникнуть серьезная проблема.

<form runat="server" id="form1">
   <!-- Server side controls go here -->
</form>
0
Jamshaid Kamran

Еще одно дополнение к этой винтажной теме ....

У меня были эти симптомы при разработке сайта с использованием JQuery Mobile, и оказалось, что это было вызвано ссылкой, по которой я перешел на уязвимую страницу, на которой не установлен атрибут rel="external"

Это означало, что JQuery загружал содержимое новой страницы через AJAX и «внедрял» их в текущую страницу, а не перезагружал ее целиком, и, следовательно, требуемый JavaScript-код обратной передачи отсутствовал до полного обновления страницы.

0
Ted

я использовал этот метод в моем скрипте, который включен в форму 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()
}
0
user5292083

У меня была эта проблема, а иногда и просто глупость. Я написал его как __doPostback с нижним регистром «b», где он должен был быть __doPostBack с верхним регистром «B».

0
Mark Ibanez

Я получил это, когда я нажимал на LinkButton. Решил это, добавив OnClick="LinkButton2_Click" в разметку.

0
WhatsInAName