четверг, 30 декабря 2010 г.

Использование внешних C# методов в C1

В С1 можно встраивать и использовать методы, написанные на C#.

В качестве введения, я приведу простой пример использования такого метода в С1. Это минимум, который необходимо знать, чтобы понимать как это работает в С1. (В других сообщениях на тему использования C# методов, я буду отталкиваться от этой базовой информации.)



Представим, что нам нужно на странице (-ах) выводить текущую дату. (И почему-то очень хочется сделать это при помощи C# :) ). Что нам для этого нужно? А нужно:
  1. Создать публичный класс и в нем создать публичный статичный метод, который будет возвращать строку, содержащую дату, отформатированную нужным нам способом.
  2. Добавить этот метод в С1 как внешнюю C# функцию.
  3. Использовать эту внешнюю C# функцию на странице (или в шаблоне для нескольких страниц, если нужно).
Приступим.
  • Создаем нужный нам метод:
  1. Открываем сайт в Visual Studio.
  2. В папку App_Code в корневой папке сайта добавляем класс, скажем, Demo.Functions.cs
  3. Заменяем содержимое файла класса на такой код:

    using System;


    namespace Demo
    {
      public class Functions
      {
        public static string CurrentDate()
        {
          return DateTime.Now.ToLongDateString();
        }
      }
    }

  4. Сохраняем файл.
  • Теперь добавляем метод CurrentDate как внешнюю C# функцию в С1:
  1. F5, чтобы запустить сайт.
  2. Заходим в админку как администратор.
  3. В разделе "Функции" (Functions), выбираем узел C# Functions и нажимаем кнопку Add External C# Function.
  4. На первом шаге мастера, в поле Type набираем Demo.Functions, т.е. название нашего класса ("Functions") и его пространство имен ("Demo"). 
  5. Нажимаем кнопку Next - если мы все сделали правильно, то в списке Method name появится наш метод CurrentDate. (Так как мы создали только один метод, то в списке будет только он.)
  6. Выбираем наш метод CurrentDate и нажимаем Next.
  7. На следующем шаге мастера, просто соглашаемся с предложенным наименованием нашей C# функции (получится Demo.CurrentDate) и нажимаем Finish. (Функция появится в ветке C# functions.)
  • И наконец, используем нашу функцию Demo.CurrentDate на странице сайта.
  1. В разделе "Контент" (Content) выбираем страницу и открываем ее на редактирование и на вкладке "Контент" (Content) страницы переключаемся в редактор кода (Source).
  2. Cтавим курсор туда, где мы хотим вставить нашу функцию и вызываем окно выбора функций (Insert | Function Markup).
  3. Раскрываем All Functions | Demo и выбираем функцию CurrentDate.
  4. Нажимаем ОК и сохраняем изменения на странице (Save).
  5. Делаем предварительный просмотр страницы (вкладка Preview).
На странице должно появится что-то вроде "Thursday, December 30, 2010".

Важно! Те, кто используют Internet Explorer не смогут добавить функцию указанным выше способом (Insert | Function Markup). Вместо этого, нужно просто добавить XML код этой функции прямо в код страницы вот так:

<f:function name="Demo.CurrentDate" xmlns:f="http://www.composite.net/ns/function/1.0" />

Комментариев нет:

Отправить комментарий