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

Можно ли использовать __doPostBack()?

Можно ли использовать __doPostBack(), или это не рекомендуется, потому что оно генерируется из ASP.Net, и мы не уверены, изменили ли они его в следующей версии ASP.Net.

4b9b3361

Ответ 1

Я бы советовал ему, так как это внутреннее содержимое ASP.NET и никогда не предназначалось для непосредственного использования.

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

<asp:Button id="btnDummy" runat="server" OnClick="Foo" style="display: none;" />

Тогда JS:

document.getElementById("<%=btnDummy.ClientID%>").click();

Таким образом, мне все равно , как появляется сообщение, я просто запускаю естественный поток событий.

Ответ 2

Вы не должны называть его напрямую. Вы должны сгенерировать вызов javascript с помощью функций в Page.ClientScript, таких как:

Это гарантирует, что он всегда совместим.

Ответ 3

Они, вероятно, не изменят его, но зачем его прямо называть? Я думаю, что это лучшая стратегия для запуска события (например, нажатие кнопки), и пусть управление запускает обратную передачу.

Мне нужно вызвать функцию обратной передачи непосредственно, чтобы она рекомендовала использовать функции Page.ClientScript, описанные ниже.

Ответ 4

Я думаю, что он отлично подходит для использования напрямую, и использовал его без сбоев, его просто функцию javascript в конце концов.

Ответ 5

Мы используем его повсюду, и я не могу себе представить, что его можно было бы удалить из ASP.NET. Я думаю, что метод поддельной/скрытой кнопки - это как хоки, если не хуже. Если вы используете поддельный подход к кнопке, то у вас нет возможности пройти в __EVENTARGUMENT. Мне нравится использовать __EVENTARGUMENT для передачи моих данных на сервер лучше, чем создание скрытых полей, потому что хакеру будет сложнее скомпрометировать, чем просто отправить скрытое поле на мою страницу. Мне также не нравится идея создания полей и элементов управления на странице, если они даже не будут отображаться. Я уверен, что поддельный кнопочный подход, пожалуй, проще для понимания новичком. Говоря, что я ищу более элегантный способ приблизиться к этому, но все же нахожусь называть

    __doPostBack('%=UpdatePanel.ClientID%>','MyData') 

в некоторых случаях.