Не найдя хорошего решения, я написал небольшой скрипт давным-давно, загрузив данные из спецификации unicode (v.5.0.0) и генерируя интервалы для каждой категории юникода и подкатегории в BMP (в последнее время вместо была использована небольшая программа Java , которая использует свою собственную поддержку Unicode).
В основном он преобразует \p{...}
в диапазон значений, очень похожий на выход инструмента , упомянутый Томалаком, но интервалы могут оказаться довольно большими (поскольку он не имеет дело с блоками, а с символами, разбросанными по многим различным местам).
Например, Regex, написанное так:
var regex = unicode_hack(/\p{L}(\p{L}|\p{Nd})*/g);
Будет преобразовано в нечто подобное:
/[\u0041-\u005a\u0061-\u007a...]([...]|[\u0030-\u0039\u0660-\u0669...])*/g
Не использовали его много в но, похоже, он отлично работает на моих тестах, поэтому я публикую здесь, если кто-то найдет это полезным. Несмотря на длину результирующих выражений (пример выше имеет 3591 символ при расширении), производительность кажется приемлемой (см. тесты в jsFiddle, благодаря @modiX и @Lwangaman для улучшения).
Вот источник (raw, 27.5KB; minified , 24.9KB, не намного лучше ...). Это может быть уменьшено за счет отмены символов Unicode, но OTOH будет подвергать риску проблемы с кодировкой, поэтому я ухожу, как есть. Надеюсь, что с ES6 этот вид больше не понадобится.
Обновление: это похоже на ту же стратегию, которая была принята в плагине XRegExp Unicode , упомянутом Тимом Дауном, кроме что в этом случае используются регулярные выражения JavaScript.
Это от сайта Microsoft:
Средства управления интернет-пользователя
Веб-пользовательские элементы управления
http://msdn.microsoft.com/en-us/library/aa651710 (По сравнению с 71) .aspx
UserControl должен быть размещен веб-сайтом и связан с файлом ASCX с помощью codebehind модели. Поэтому с пользовательским элементом управления можно определить основную разметку для управления в файле ASCX и поместить весь код в файл ASCX.CS.
WebControl является просто классом и не позволяет Вам определить связанный файл ASCX; необходимо переопределить функцию Рендеринга для распечатывания любой разметки, которую управление собирается произвести. Однако, потому что это не зависит от ASCX, это может быть помещено в общую библиотеку. (DLL)
Ответить на Ваш вопрос: и сеть - и UserControls обладают тем же преимуществом - они берут некоторую часть страницы и инкапсулируют ее. Я использую UserControls, когда рассматриваемый код применяется к только одному из моих сайтов; если я буду использовать подобный код в нескольких сайтах, то я преобразую код в WebControl и перемещу его в общую библиотеку. Тот путь, когда я должен обновить его, я вношу изменения в одном месте а не 3 или 4.
Подсказка: можно обойти часть проблемы определить собственный WebControl путем наследования одному из стандартного ASP WebControls. Много стандартных средств управления как Маркировка или Изображение не изолируются - можно наследоваться от них и переопределить их методы для создания собственной специализированной версии того управления. Это намного легче и менее подвержено ошибкам, чем расширение WebControl непосредственно.
Пользовательские элементы управления компилируются с проектом, и он должен быть записан на том же языке как проект.
Пользовательские элементы управления могут быть отброшены на холсте и настроены путем установки свойств без программиста, знающего все внутренности (может быть хорошим или плохим). Также, так как пользовательский элемент управления предварительно компилируется в dll, он не должен быть записан на том же языке как проект.
Если внимание обращено на деталь, Пользовательский элемент управления может быть записан для отображения в разработчике (хотя это не может стоить проблемы).
Я думаю, о чем Вы думаете, Пользовательский элемент управления по сравнению с Пользовательским элементом управления, обоими из которых являются Веб-элементы управления. usercontrol не имеет разработчика UI, в то время как пользовательский элемент управления может.
Обычно мы разделяем наш UI на отдельные области использования функциональности UserControls. Однако, если мы создаем функциональность, которую мы хотим использовать через несколько решений, мы обычно создаем их как Пользовательские элементы управления.
Только пользовательские элементы управления могут быть добавлены к панели инструментов.
Вот выборка от Microsoft:
http://msdn.microsoft.com/en-us/library/aa651710 (По сравнению с 71) .aspx
Для доступа к ним от JavaScript необходимо использовать document.GetElementById('<%=TheControl.ClientID%>')
.
Различие между веб-элементом управления и пользовательским элементом управления - то, что пользовательский элемент управления имеет ascx файл с определением HTML, в то время как веб-элемент управления не делает; это - причина для других различий. Кроме того, для пользовательских элементов управления Вы не можете использовать new Control()
, необходимо использовать LoadControl
вместо этого, потому что это загружает .ascx.
Для простых средств управления, которые наследовались средствам управления .NET, как текстовое поле с проверкой или чем-то как этот, я склонен использовать веб-элементы управления; для более сложных средств управления с HTML и внутренних средств управления я склонен использовать пользовательские элементы управления. Но это - в основном Ваше персональное предпочтение.
Простой:
UserControl:
WebControl:
это не совсем верно. Веб-элемент управления похож на кнопку, и можно создать разработчика для него так, это действительно становится представленным в режиме разработчика.
Основное различие - то, что веб-элемент управления является атомарной единицей. Это, как предполагается, работает точно так же, как все другое управление сервером по умолчанию нашло в Visual Studio (включая режим разработчика). Кроме того, это создается полностью в коде и хранится в DLL (т.е. нет никакой стороны HTML к нему, и ничто не публикуется к веб-сайту).
В то время как пользовательский элемент управления, версия.NET ASP Включает. Существует отрывок HTML с, он - соответствующий код - позади страницы. Существует файл ASCX, это выставлено к веб-сайту во время публикации. Дополнительное примечание, их легче разработать, чем управление сервером.
Один лучше, чем другой? Это зависит от того, какова цель. Но в целом, если Вы создаете что-то, чтобы другие люди/проекты использовали, пошел с веб-элементом управления. Если Вы создаете что-то для потребления своего собственного проекта, затем идут с пользовательским элементом управления.
Теперь, насколько JS затронут, это - более твердая вещь описать и гарантирует довольно большое обсуждение самостоятельно. Для управления сервером необходимо будет обеспечить рычаги для JS для достигания клиентского идентификатора для каждого внутреннего контроля. В то время как пользовательский элемент управления можно кодировать JS непосредственно на пользовательском элементе управления и получить доступ к средствам управления тем же путем, Вы были бы на странице ASPX.