Как я могу связать свой собственный JavaScript на стороне клиента, не теряя функциональности PostBack - PullRequest
0 голосов
/ 19 сентября 2008

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

Ответы [ 4 ]

4 голосов
/ 19 сентября 2008
<asp:LinkButton ID="lbEdit" CssClass="button" 
            OnClientClick="javascript:alert('do something')" 
            onclick="OnEdit"  runat="server">Edit</asp:LinkButton>

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

2 голосов
/ 01 декабря 2008

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

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

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

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

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

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

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

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


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

1 голос
/ 19 сентября 2008

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

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

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

и в вашем aspx:

<a href="javascript:<%=GetPostBack() %>">Click here to postback</a>
0 голосов
/ 19 сентября 2008

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...