Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
206
Добавлен:
10.05.2015
Размер:
8.8 Mб
Скачать

14.2.6. Передача данных на клиентскую сторону

Для передачи данных на клиентскую сторону, на сервере можно использовать словарь Data, который есть у каждого компонента. Все значения, записанные в этот словарь, будут доступны на клиентской стороне в виде JSON-объекта в свойстве $data.

Например, записав при загрузке текущую дату:

protected override void OnLoad()

{

Data["serverTime"] = DateTime.Now;

}

До нее можно с легкостью добраться на клиентской стороне:

{

$init: function() {

alert(this.$data.serverTime);

}

}

Данную методику можно использовать только в момент загрузки компонента, как при загрузке страницы, так и при его отложенной загрузке через JavaScript.

Если на клиентской стороне необходимо получить/отправить данные в произвольный момент, можно воспользоваться удаленным вызовом функции (RPC). Все методы компонента, помеченные атрибутом RpcMethodAttribute, можно вызывать удаленно.

Пример таких методов представлен ниже. Остается отметить, что такие методы, по сути, являются методами Веб-сервисов, для которых созданы прокси-классы в JavaScript:

public class MyUserControl : UserControl

{

[JsonRpcMethod]

public Person GetPersonById(int personId)

{

// возвращаем Person

}

[JsonRpcMethod]

public void SavePerson(Person person)

{

// сохраняем Person

}

}

Перегрузка функций поддерживается только по количеству параметров. По типу параметров перегрузка не поддерживается. В качестве параметров или возвращаемого значения могут быть произвольные объекты, которые впоследствии будут отформатированы в JSON-объекты.

14.2.7. Наследование компонент и страниц

Jasp поддерживает наследование компонент как на серверной стороне, так и на клиентской. У компонента наследуются все ресурсы от базового. С помощью наследования, можно, например, делать страницы, содержащие базовую разметку (по аналогии с MasterPage в ASP.NET), но также и отдельные компоненты, которые содержат часть базовой разметки и могут быть использованы для производных компонент.

Для наследования компонент, достаточно унаследовать серверный класс. При этом все ресурсы компонента (разметка, стили и скрипты) будут дополнять или замещать ресурсы базового компонента.

14.2.7.1. Наследование разметки

По умолчанию, HTML разметка копируется от базового компонента. Но благодаря специальному тегу <replacement> можно заменять или удалять базовые компоненты. Например, у нас есть базовая разметка:

<body>

<div id="div1">Первоначальный текст </div>

</body>

И производная разметка:

<replacement id="div1">

<div id="div2">Переопределенный текст</div>

И другой текст

</replacement>

При копировании разметки из базового компонента, вместо элемента с идентификатором div1 будет подставлена замена из тега replacement с одноименным идентификатором.

14.2.7.2. Наследование стилей

При добавлении CSS ресурса к наследуемому компоненту, Jasp будет добавлять его сразу после CSS ресурса родительского компонента. Тем самым, если создавать одноименные стили – они будут переопределяться. Данная практика наследования хорошо работает со стилями страницы, но при работе с компонент возникают проблемы – стили затираются и для родительского компонента, который может быть размещен на этой же странице, что неявно изменит его внешний вид. Решение для таких случаев – это создание стилей с другими именами.