Очищаем HTML код от ненужных атрибутов ID в серверных контролах ASP.NET

20.09.2008 17:19:00

Проблема

Если у вас есть серверный контрол, с длинным атрибутом ID, либо он лежит внутри множества других контролов (что приводит к очень длинным ID), то этот ID всегда  выводится в конечный HTML выдаваемый клиенту в неком преобразованном виде. Если у вас на странице много таких контролов, скажем внутри Repeater лежит некий Label, то в итоге объем сгенеренных в HTML коде аттрибутов ID может быть существенным. При этом довольно часто, эти ID на клиентской стороне не нужны вовсе, обычно это касается ссылок, картинок, текста (если вы не производите никакие AJAX манипуляции с этими элементами на клиентской стороне).

Решение

Довольно красивое решение было найдено в блоге salvo

На этапе PreRender, обнуляем значение ID серверного контрола. Что приводит к тому, что в итоге ID не передается клиенту.

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

public void DeleteID(object sender, EventArgs e)

        {

            if (sender is Control)

            {

                Control c = (Control)sender;

                c.ID = null;

            }

        } 

 Затем указываем его в атрибуте серверного контрола:

<asp:Label ID="MyLongIDLabelForName" runat="server" Text="Salvo" OnPreRender="DeleteID"></asp:Label> 

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Тэги:

Категории: разработка

Краткий обзор CMS систем для .NET Framework / ASP.NET

04.03.2008 8:40:00

Возникла необходимость выбора Open Source CMS для реализации очередного проекта. Вообще надо сказать, что популярные и известные CMS (а также различные open-source форумы, движки и библиотеки) написаны на PHP или Perl. Но подтягиваются и .NET реализации, некоторые из которых выглядят вполне качественными и функциональными.

В данной заметке приведу краткий обзор CMS которые я нашел в сети, в дальнейшем, возможно, приведу более детальное исследование некоторых из них. Критерии выбора были следующие: платформа ASP.NET, бесплатность, открытость исходного кода проекта.

DotNetNuke

Веб сайт: http://www.dotnetnuke.com/
Текущая версия 4.8.1
Платформа: ASP.NET 2.0
СУБД: Microsoft SQL Server (по всей видимости поддерживается 2000 и выше)
Язык программирования: в основном VB.NET (один модуль на C#).
Лицензия: BSD

Наверно, наиболее популярный из CMS реализованных на .NET (на сайте приведена цифра – 400тыс. пользователей). Авторы описывают его как гибкий, дружелюбный и мощный одновременно.

Функциональность:

  • поддержка множества порталов;
  • полностью настраиваемый внешний вид, поддержка стилей и скинов;
  • многоязычный, в том числе поддерживается русский язык;
  • управление файлами, корзина для удаленных, поддержка drag’n’drop;
  • заявлена поддержка следующих стандартных модулей: авторизация и поддержка пользователей, анонсы, баннер, блоги, контакты, дискуссии и форумы, списки документов, списки событий, FAQ, обратная связь,  галерея изображений или мультимедиа, изображения, ссылки, RSS, поиск, XML/XSLT преобразования, вывод пользовательских табличных данных.

Помимо стандартных, на сайте имеется довольно много дополнительных платных модулей.

На первый взгляд выглядит немного тормознутым, особенно поиск по ключевым словам – по самому сайту http://www.dotnetnuke.com/
Документация очень подробная по всем аспектам (как по разработке своих модулей, так и по использованию системы).

Umbraco

Веб сайт: http://umbraco.org/
Текущая версия 3.0.3
Платформа: ASP.NET 2.0, Microsoft ASP.NET 2.0 AJAX Extensions 1.0
СУБД: Microsoft SQL Server 2005
Язык программирования: C#
Лицензия: MIT License

Функциональность определенно не такая объемная, как у DotNetNuke, но есть несколько довольно интересных возможностей, в том числе:

  • интегрированный WYSIWYG редактор, редактор для шаблонов JavaScript файлов и CSS;
  • поддержка редактирования непосредственно из Microsoft Word;
  • версионирование всех изменений;
  • публикация по расписанию;
  • полная поддержка веб-стандартов, шаблонов и стилей;
  • легкая интеграция существующих .NET пользовательских контролов (User and custom controls), легко расширяемая объектная модель;
  • удобный форум;

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

Помимо бесплатной версии предлагаются расширенные платные версии: http://umbraco.org/products/umbraco-pro/feature-matrix

mojoPortal

Веб сайт: http://www.mojoportal.com/
Текущая версия 2.2.4.6-b
Платформа: ASP.NET 2.0 для Windows или Mono (Linux, Mac OS X)
СУБД: MS SQL, MySQL, PostgreSQL, SQLite, FirebirdSql
Язык программирования: C#
Лицензия: CPL

Довольно интересная реализация, которая поддерживает, в том числе Mono и может работать с множеством бесплатных SQL серверов.
Функциональность:

  • поддержка множества сайтов в одной инсталляции;
  • XHTML совместимый менеджер контента;
  • WYSIWYG редактор контента (FCKeditor , TinyMCE, или XStandard);
  • блоги, форумы;
  • календарь событий;
  • галерея изображений;
  • новости с рассылкой;
  • RSS агрегатор;
  • контакты;
  • менеджер файлов;
  • опросы и голосования;
  • интернет магазин (базовая функциональность);
  • поддержка многоязычности, также заявлена поддержка русского языка;
  • авторизация пользователей Active Directory, OpenLDAP, OpenID и Windows Live ID.
  • поиск по ключевым словам;

Rainbow

Веб сайт: http://www.rainbowportal.net/
Текущая версия: Rainbow 2.0.0.1881e
Платформа: ASP.NET 2.0
СУБД: MS SQL 2000
Язык программирования: C#
Лицензия: LGPL

Rainbow первоначально основывался (как и DotNetNuke) на портале IBuySpy который был разработан Microsoft для демонстрации возможностей ASP.NET.
Смущает множество неработающих ссылок на сайте, в частности на текущий момент не открывается ссылка по главной новости о выпуске версии 2.0.0.1881e

Функциональность (более 45 стандартных модулей):

  • поддержка множества сайтов в одной инсталляции;
  • поиск;
  • редактирование контента в режиме WYSIWYG;
  • кастомизация сайта с помощью скинов и стилей;
  • управление пользователями и ролями;
  • анонсы, статьи, блоги, форумы, контакты, списки событий, FAQ, галереи изображений, опросы, etc.

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

AxCMS.net


Веб сайт: http://www.axcms.net/
Текущая версия: 7.0
Платформа: ASP.NET 2.0, AJAX Extension 1.0, Web Service Enhancements 3.0
СУБД: MS SQL 2000/2005
Язык программирования: C#
Лицензия: своя, нельзя декомпилировать части без исходников и распространять изменения

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

Функциональность:

  • модуль для печати;
  • поддержка загрузки файлов на сайт пользователями;
  • опросы;
  • поиск;
  • поддержка Sitemap;
  • RSS агрегатор;
  • регистрация и аутентификация пользователей;
  • новостные рассылки;
  • ротирующиеся картинки;
  • форум;
  • генератор форм и таблиц, без необходимости править HTML;
  • многоязычность (русский поддерживается);
  • интеграция с Explorer (видимо через WebDAV);
  • электронные открытки, хлебные крошки, баннеры, etc.

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

Cuyahoga

Веб сайт: http://www.cuyahoga-project.org/
Текущая версия: 1.5.2
Платформа: ASP.NET 2.0, Mono
СУБД: MS SQL, PostgreSQL, MySQL  (через nhibernate)
Язык программирования: C#
Лицензия: BSD

Как пишут авторы этого труднопроизносимого на русском языке проекта - основная цель ее, это показать разработчикам .NET, что есть другой способ организации .NET приложений, нежели тот который показывается в стандартных примерах. Также авторы противопоставляют DotNetNuke, Rainbow, и Portal Starter Kit (ранее известный как IBuySpy Portal) своей системе, утверждая, что Cuyahoga дает возможность строить веб-сайты с любым дизайном, за счет использования гибкой разметки.

Функциональность:

  • Множество сайтов в одной инсталляции, алиасы для сайтов, иерархическая структура сайта с неограниченной вложенностью;
  • связи между модулями на странице, что позволяет им взаимодействовать между собой;
  • шаблоны с выделенными пользовательскими частями;
  • тонкая настройка кеширования объектов и модулей;
  • поиск;
  • поддержка локализации контента;
  • синдикация RSS; 
  • WYSIWYG редактор;
  • стандартные модули в себя включают: статьи, статический html, раздел downloads, remote content (контент с удаленных источников), регистрация и авторизация пользователей, переключатель языков;

На сайте выложено неплохое руководство по написанию модулей: http://www.cuyahoga-project.org/46/section.aspx/download/19

N2

Веб сайт: http://n2cms.com/
Текущая версия: 1.3.3
Платформа: ASP.NET 2.0
СУБД: MS SQL 2000/2005, MySQL (посредством nhibernate)
Язык программирования: C#
Лицензия: GNU

Описание на сайте производителя  гласит, что, N2 – это легковесная CMS, которая дает простой и мощный интерфейс для редакторов, а для разработчиков – понятный и открытый API. Радует функциональность и простота использования самого сайта, не требуется много времени, чтобы найти какой функционал поддерживается, документацию для разработчика.

Функциональность:

  • Множество сайтов в одной инсталляции, иерархическая структура контента с неограниченной вложенностью;
  • простой в использовании интерфейс редактора, легкость его расширения;
  • сайты разрабатываются в Visual Studio (?);
  • модель БД сохранена в виде исходного кода (nhibernate ?);
  • авторизация с использованием стандартных провайдеров asp.net;
  • есть возможность встроить в существующее приложение;
  • WYSIWYG редактор, файл менеджер, редактирование поддерживается как минимум в IE и Firefox;
  • гибкий дизайн шаблонов;
  • поддержка JQuery, TinyMCE, Microsoft Ajax;
  • версионирование контента;
  • локализация контента;
  • визард по созданию страниц;
  • менеджер пользователей;
  • публикация по расписанию;
  • включены модули: текст, новости, календарь событий, FAQ, галерея картинок, опросы, подписка RSS, поиск, и пр.

XMLNUKE

Веб сайт: http://www.xmlnuke.com/
Текущая версия: 2.0 RC1 (CSharp Edition)
Платформа: любая, доступна также PHP реализация
СУБД: не требуется, XML
Язык программирования: C#, PHP
Лицензия: GNU

CMS основана на преобразованиях XML в HTML при помощи XSLT, что в общем то является стандартной практикой. Не использует никакие БД, что с одной стороны плюс – не нужно за них платить, с другой стороны минус – при множестве операций записи, генерации XML файлов и выполнении XSLT преобразований (достаточно ресурсоемкая операция), производительность такой системы может быть заметно ниже.

Функциональность:

  • Множество сайтов в одной инсталляции;
  • минимальное количество действий по запуску: просто распаковать и залить на сайт;
  • поддержка локализации;
  • сниппеты (упрощенный синтаксис генерации HTML, так как XSLT довольно сложен);
  • генерация site map;
  • темы, печать документов;
  • доступны модули: гостевая книга, поиск по ключевым словам, аутентификация пользователей и профили, раздел download.

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

JMDCMS

Веб сайт: http://www.jmdcms.com/
Текущая версия: 3.0.0.9 Alpha
Платформа: ASP.NET 2.0
СУБД: SQL Server 2000/2005
Язык программирования: C#
Лицензия: Common Public License

Описание с сайта: гибкая автоматическая разметка в 3,2 и 1 колонку. Контроль доступа на уровне страниц и модулей, контроль публикации. Сайт автора, на мой взгляд, перегружен рекламой.

Функциональность:

  • Множество сайтов в одной инсталляции, неограниченная вложенность страниц;
  • разметка, основанная на CSS шаблонах;
  • поддержка модулей;
  • детальная статистика;
  • встроенные модули: меню, управление пользователями, страницами и безопасностью.

На текущий момент довольно слабая функциональность, хотя многое заявлено как планируемое.

NKCMS

Веб сайт: http://nkcms.sourceforge.net/
Текущая версия: ?
Платформа: ASP.NET
СУБД: MS SQL
Язык программирования: C#
Лицензия: BSD

Весьма аскетичный WEB сайт, приводит информация о некоторых возможностях этой системы:
 - использование XSL для шаблонов;
 - поддержка многоязычности;
 - управление доступом пользователей;
 - windows приложение для управления сайтом.

Судя по всему, последняя активность над проектом была в 2005 году, рассматривать его особого смысла не имеет.

Freeleen

Веб сайт: http://www.feeleen.ru/
Текущая версия: ?
Платформа: ASP.NET ?
СУБД: ?
Язык программирования: ?
Лицензия: ?

Из описания на самом сайте понять можно не очень много. Предлагается обращаться на e-mail. Предположительно система не бесплатна, исходного кода тоже не видно – к загрузке предлагается только демоверсия Windows клиента для управления сайтом.

Привожу исключительно в качестве справочной ссылки, к тому же единственная в обзоре CMS, которая создана автором из России.

Заключение

Меня, как разработчика, наиболее заинтересовал из этого списка N2, в частности обещаниями легкой интеграции в существующие приложения. Еще кажутся достойными более пристального изучения mojoPortal, umbraco и Cuyahoga. Конечно, кажется что более функциональный DotNetNuke или, например Rainbow, тоже вполне достойные системы, но на исключительно поверхностный взгляд они выглядят избыточными и сложными в доработке и поддержке.

А у вас был опыт работы с одной из перечисленных CMS?

Текущий рейтинг: 4.5 (2 голосов)

  • Currently 4,5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Тэги: , , ,

Категории: разработка

FIFO Semaphore (для Microsoft .NET Framework)

28.02.2008 23:00:00

Семафор - это примитив синхронизации потоков, который позволяет войти в заданный участок кода не более чем n потокам (это определение дал выдающийся ученый  Эдсгер Дейкстра).

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

В некоторых случаях, может иметь значение порядок доступа потоков к ресурсу. Стандартный класс Semaphore никак не гарантирует порядок, в котором заблокированные потоки будут получать доступ к ресурсу (входить в заданный участок).

Например, за каждым потоком может скрываться пользователь, который ожидает доступа к ресурсу. Если использовать стандартный класс Semaphore, то доступ к освобождающемуся ресурсу будет получать случайный пользователь, не зависимо от того как давно он ожидает.

Для решения этой задачи, мною был написан класс FifoSemaphore, который реализует политику FIFO (английское First In First Out - первым пришел, первым ушел) по отношению к ожидающим потокам - поток который вызвал функцию Wait первым, должен получить доступ к ресурсу первым. При необходимости, его можно легко модифицировать так, чтобы он работал по принципу LIFO (Last In First Out).

Краткое описание класса

Интерфейс класса аналогичен стандартному классу, за исключением одного нюанса - он не наследует стандартный класс WaitHandle, и соответственно не реализует его свойства и методы (которые специфичны для Windows). Как следствие этот класс не получится использовать в вызове WaitAny

Конструкторы
FifoSemaphore()
 Создает объект.

FifoSemaphore(int _InitialCount)
 Создает объект и инициализирует начальное значение счетчика ресурсов - N;

int Release(int _ReleaseCount)
 Выходит из семафора заданное количество раз (освобождает заданное количество ресурсов), возвращает предыдущее значение счетчика ресурсов;

int Release()
 Выходит из семафора 1 раз, возвращает предыдущее значение счетчика ресурсов;

bool Wait(int _MillisecondsTimeout)
 Входит в семафор. Ожидает освобождения ресурса заданное время в миллисекундах. Если ресурс не был освобожден в указанный период времение, возвращает значение false, иначе - true.

void Close()
 Закрывает семафор и освобождает ресурсы. После этого вызова использовать семафор более не допустимо.

P.S.

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

Загрузить проект с реализацией и тестом: FifoSemaphore.zip (7,85 kb)

Текущий рейтинг: 5.0 (1 голосов)

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Тэги: , ,

Категории: разработка

Эффективная домашняя страница

14.02.2008 12:38:00

Какую домашнюю страницу можно задать, чтобы оптимально организовать свою работу? 

Многие ставят себе домашней страницей поисковую форму Гугла или Яндекса (mail.ru, rambler.ru и т.д.). Более продвинутые пользователи предпочитают создавать собственную страницу, для этого есть множество средств, начиная от Google Personal, до блогов или собственных сайтов.

Лично я использую в качестве домашней страницы - html файл, который находится на самом компьютере (и на домашнем и на рабочем).

Моя домашняя страница - кликните чтобы открыть

В результате - домашняя страница загружается очень быстро, ее можно легко отредактировать (конечно для того кто знает HTML). Под рукой все наиболее часто используемые ресурсы. Понятно, что тогда нет никакой серверной обработки, но есть клиентский скрипт, в котором тоже можно много чего сделать.

У меня этот home page указан во всех четырех браузерах, которые приходится использовать по работе. Это удобно еще тем, что не привязываешься собственно к меню, или избранным/ссылкам каждого конкретного браузера.

Небольшая подсказка - если вы захотите использовать этот файл как home-page, при открытии его непосредственно с локального диска Internet Explorer выдает предупреждение, что файл содержит скрипт и может быть небезопасен. При этом если этот же файл открывается по сети, либо через интернет, таких предупреждений нет (при настройках по умолчанию). Для того чтобы предупреждение не выдавалось, можно например открывать его через URL \\pc-name\c$\HomePage\default.html, где pc-name - имя компьютера. Вместо c$, доступного администратору, можно использовать любую расшаренную папку, тогда предупреждения тоже не будет.

Загрузить страницу с иконками: my-homepage.zip (17,11 kb)

Текущий рейтинг: 4.0 (1 голосов)

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Тэги: ,

Категории: разное

TcpProxy - создаем цепочки TCP соединений

24.01.2008 21:18:00

Введение

Здесь описывается программа, с помощью которой вы сможете удаленно подключиться к своему домашнему компьютеру из сети Интернет (например через терминальное соединение) не имея внешнего (реального) IP адреса на домашнем компьютере, создавать tcp прокси соединения, перекидывающие коннекты с одной машины на другую. Если вам, когда либо приходилось с этим сталкиваться, возможно эта заметка вам поможет.

Описание

Будучи активным участником построения разного рода сетей, мне довольно часто приходилось решать такую задачу:
Имеется некий сетевой сервис, работающий на компьютере Server, с заданным номером порта TCP. Есть некоторый клиент этого сервиса, работающий на компьютере Client, но который по разным причинам не может подключиться к этому сервису (например Server ограничивает клиентов по IP адресам, или сервис работает в локальной сети, а клиент находится в сети Интернет, причины могут быть разные). При этом у нас есть некий третий компьютер Proxy, который имеет доступ к компьютеру Server, и к которому в свою очередь имеет доступ наш клиент Client.

Вариант №1

Требуется организовать прокси сервер на компьютере Proxy, который бы прокидывал (мэппил) соединение по цепочке: Client -> Proxy -> Server. Это, в общем то, достаточно просто, многие общеизвестные прокси реализуют эту функцию - обычно она называется Mapped Link.

 

Рисунок к варианту 1.

Вариант №2

Задача становится более сложной и интересной в случае, если компьютер Proxy также не имеет возможности исходящего подключения к Server, но при этом сам Server может инициировать и установить соединение с Proxy . Т.е. Соединение возможно установить по следующей цепочке Client -> Proxy <- Server.

Каким же образом Server узнает о том, что есть запрос на входящее для него соединение от клиента? Ответ: он может установить контрольное постоянное подключение к компьютеру Proxy, через которое он и получит сообщение о входящем соединении от клиента. Получив такое сообщение он сам инициирует исходящее соединение к Proxy  которое затем связывается с клиентским соединением.

Рисунок к варианту 2.

Программа TcpProxy

Собственно приведенные выше  задачи и решаются в программе, которую вы можете скачать здесь совершенно бесплатно (и использовать на свой страх и риск).
TcpProxy позволяет шифровать контрольное соединение, чтобы никто кроме вас не мог воспользоваться сервисом. Также можно ограничивать клиентов по IP адресам.

Системные требования и загрузка

Приложение использует Microsoft .Net Framework 2.0, если его у вас нет, то можете загрузить ее с сайта Microsoft.
Скачать программу TcpProxy: SetupTcpProxy.msi (427,00 kb).

Настройка и запуск

Скачайте TcpProxy, затем установите ее, для варианта 1 на компьютере Proxy, для варианта 2 еще и на компьютере Server.
Отредактируйте конфигурационный файл LinkConfig.xml, в котором указываются все настройки для программы.
Я постарался откомментировать этот файл, правда на английском языке, если что то не понятно - пишите.
После чего можно запускать службу, через оснастку Services, или командой "net start TcpProxy".
Мониторинг работы можно выполнять по сообщениям в Eventlog: Application. По умолчанию пишутся ошибки и предупреждения, уровень логирования
можно менять в конфигурационном файле, параметр LogLevel.

Заключение

Конечно есть и альтернативные способы решения этой задачи. Например - организация VPN соединения. Или же в каких то случаях вы (или администратор вашей сети) может открыть входящее соединение на роутере. К слову, многие домашние роутеры с NAT позволяют это.

Использование TcpProxy имеет следующие плюсы:

  • не нужен внешний IP адрес;
  • можно удаленно подключаться к вашему мобильному устройству или ноутбуку, даже если вы все время меняете сеть (wi fi, gprs) - главное чтобы устройство было в сети;
  • ваше компьютер не "светится" напрямую в сети Интернет с открытыми  портами (но светится шлюз - Proxy), это дает некоего рода анонимность.
Минусы  - во многом вытекают из плюсов:
  • нужен отдельный сервер в сети, который может принимать входящие соединения, на котором установлен Microsoft Windows и .NET Framework 2.0;
  • весь трафик идет через этот промежуточный сервер;
  • соединение устанавливается дольше, в связи с дополнительными манипуляциями которые нужно произвести.
Буду рад, если кому то эта программа поможет.
Если вы нашли в ней ошибку, пожалуйста напишите мне!

 

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Тэги: ,

Категории: утилиты

MutableHyperLink - ссылка мутирующая в span

15.01.2008 20:00:00

В процессе разработки довольно часто приходится решать такую задачу: превращать ссылки в некоторый текст, если они указывают на текущую страницу (на элемент который выбран). Например это может быть меню, которое ссылается на страницы сайта. Соответственно при клике на этот пункт меню, желательно его выделить убрав саму ссылку.

Страницы ссылающиеся сами на себя нежелательны и путают пользователей. Якоб Нильсен пишет про это в своей статье 10 главных ошибок веб-дизайна 2003 года.

Обычный путь решения этой задачи в ASP.NET, это поставить PlaceHolder's и в зависимости от того, является страница текущей или нет - показывать нужный текст или ссылку. Или можно например указать пустое значение ссылки href для тэга <A>, тогда браузер не будет отображать ее как ссылку (правда не уверен насчет кроссплатформенности такого решения). Заниматься всем этим достаточно скучно и нудно.

Собственно для решения этой задачи я создал достаточно простой контрол MutableHyperLink, который наследуется от стандартного контрола ASP.NET HyperLink. Этот контрол автоматически определяет страницу на которой он находится, и если ссылка ведет на эту же страницу - отображается тэг SPAN с таким же содержимым, как если бы это была ссылка. Дополнительно можно задать отдельный класс стилей для SPAN, что позволяет выделить этот элемент.

Пример использования этого контрола можно посмотреть на этом сайте, кликните например на ссылку "Архив" или "Написать мне".

 
Пример выделенной ссылки.

Краткая документация по контролу MutableHyperLink

Помимо стандартных, унаследованных от класса HyperLink, доступны следующие свойства:

SpanCssClass - класс CSS, который будет задан у контрола, если он отображается как SPAN.

ParameterMatch - свойство которое задает, должны ли совпадать параметры URL (Url Parameters) текущей страницы, с теми которые заданы в свойстве NavigationUrl, для того что бы считать страницу текущей.

IgnoreCase - свойство, которое задает, игнорировать регистр букв при сравнении URL текущей страницы с NavigationUrl, или учитывать.

DefaultPage - свойство, которое задает текущую дефолтную страницу (Default Page), если ссылка ведет не на файл, а на директорию с некой страницой по умолчанию, в ASP.NET обычно это 'default.aspx'

ForceSpan - всегда генерировать тэг SPAN, независимо от того, какая страница текущая.

ForceLink - всегда генерировать тэг A, независимо от того, какая страница текущая.

Установка и подключение к проекту

Скачайте и разархивируйте приложенный к заметке файл. Он содержит проект на C#, который компилируется в .dll содержащий нужный контрол.

Подключается контрол стандартным способом - можно включить проект в ваш Solution, добавить reference на проект и указать его в файле Web.Config:

   <add namespace="maqdev.Web.UI.WebControls" tagPrefix="maqdev" assembly="maqdev.MutableHyperLink"/>

После чего вы можете его добавить на свою страницу, например так:

   <maqdev:MutableHyperLink NavigateUrl="~/contact.aspx" Text="Contact" SpanCssClass="SelectedLink" runat="server" />

Скачать проект с контролом: maqdev.MutableHyperLink.zip

Текущий рейтинг: 5.0 (1 голосов)

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Тэги: ,

Категории: разработка

Начало

13.01.2008 2:56:00

Все должно быть сделано так просто, как возможно, но не проще этого.
Альберт Эйнштейн.

Хочется начать блог с этой цитаты, в дальнейшем надеюсь здесь будут достаточно полезные, и при этом простые мысли и творения.

Текущий рейтинг: 5.0 (1 голосов)

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Тэги: ,

Категории: разное

Об авторе

Абдурахманов Магомед Абдурахманов Магомед
менеджер и программист

Стремлюсь создавать качественные и уникальные продукты

Последние комментарии

Календарь

<<  Ноябрь 2008  >>
повтсрчепясуво
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

Открыть календарь на все окно