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

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


person Homam    schedule 27.03.2011    source источник


Ответы (5)


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

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

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

Тогда JS:

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

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

person Shadow Wizard Wearing Mask V2    schedule 27.03.2011

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

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

person tenfour    schedule 27.03.2011

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

person Mark Redman    schedule 27.03.2011
comment
Да, это просто функция javascript, но проблема в том, что нет гарантии, что она будет присутствовать в следующей версии. - person Hans Kesting; 27.03.2011

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

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

person Bob Fanger    schedule 27.03.2011

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

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

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

person tony95    schedule 23.08.2017