Как связать свой собственный JavaScript с клиентской стороной без потери функциональности PostBack

Итак, я читал вопросы интервью Asp.Net в блоге Скотта Хансельмана и наткнулся на этот вопрос. Может ли кто-нибудь пролить свет на то, о чем он говорит.


person Malik Daud Ahmad Khokhar    schedule 19.09.2008    source источник
comment
Что именно вам нужно объяснить?   -  person Vincent McNabb    schedule 19.09.2008
comment
В основном то, о чем он говорит, и любые указатели на то, как это можно сделать. Может быть ссылка на статью или что-то.   -  person Malik Daud Ahmad Khokhar    schedule 19.09.2008
comment
Могу ли я добавить, что я не очень хорошо разбираюсь в Asp.Net.   -  person Malik Daud Ahmad Khokhar    schedule 19.09.2008


Ответы (4)


<asp:LinkButton ID="lbEdit" CssClass="button" 
    OnClientClick="javascript:alert('do something')" 
    onclick="OnEdit"  runat="server">Edit</asp:LinkButton>

Атрибут OnClientClick означает, что вы можете добавить немного JavaScript без потери функциональности PostBack, — так я ответил в интервью.

person Martin    schedule 19.09.2008

Объясните, как работают постбэки

Постбэки — это абстракция над веб-протоколами, которые эмулируют поведение с сохранением состояния по протоколу без сохранения состояния.

, как на стороне клиента

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

и на стороне сервера.

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

Как связать свой собственный JavaScript с клиентской частью, не теряя функциональности PostBack?

Зависит от того, что требуется. Самый простой способ, который работает в 99% случаев, — использовать asp:hiddenfield для связи между клиентом и сервером. Для крайних случаев вы хотите войти в Exenders и управлять состоянием просмотра/состоянием управления/состоянием клиента в javascript через API-интерфейсы MS ajax. Это довольно болезненно из-за огромной кривой обучения и множества ошибок, обычно достаточно использования скрытых полей и ручного вызова __doPostBack.


Вот как бы я ответил на этот пункт. Для получения дополнительной информации о __doPostBack быстрый поиск в Google даст вам множество результатов (для ленивых это первое обращение http://aspalliance.com/895)

person Matt Briggs    schedule 01.12.2008

Вы имеете в виду что-то вроде этого:

в вашем коде позади:

protected string GetPostBack()
{
    return ClientScript.GetPostBackEventReference(this, null);
}

и в вашем aspx:

<a href="javascript:<%=GetPostBack() %>">Click here to postback</a>
person sontek    schedule 19.09.2008

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

т. е. Как я могу вызвать событие элемента управления, используя свой собственный JavaScript?

Библиотека классов ASP.NET содержит класс ClientScript, находящийся в классе System.Web.UI.Page, который позволяет программно добавлять JavaScript на страницу ASP.NET.

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

Надеюсь, это имеет смысл

person WebDude    schedule 19.09.2008