- PVSM.RU - https://www.pvsm.ru -

Библиотека X.Scaffolding

Библиотека X.Scaffolding

С выходом Visual Studio 2013, ASP.NET MVC 5 и Entity Framework 6 возможности скаффолдинга встроенные в Visual Studio стали еще лучше. Однако до сих пор создавая новое веб-приложение приходится делать много действий, которые можно было бы автоматизировать.
Поэтому для себя и разработчиков с которыми я работаю был создан пакет X.Scaffolding позволяющий более продуктивно создавать веб-приложения. Именно на основе этого пакета у нас сейчас разрабатывается большинство новых веб-приложений для работы с данными.

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

Как известно, Visual Studio предоставляет огромное количество функций, которые позволяют автоматизировать рутинные операции и сосредоточится на основных задачах. Одной из таких удобных и достаточно востребованных функций является возможность генерации форм редактирования для сущностей базы данных. Появилась эта функция уже давно, но с релизом Visual Studio 2013 стала и интеграцией в базовый шаблон приложения фреймворка bootstrap стала на мой взгляд еще удобнее. Но как известно — пределу нет совершенства.

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

Кроме того, не все типы данных сейчас поддерживаются стандартными расширениями. Например сейчас во многих моих проектах очень часто используются возможности пакета для создания HTML-редактора, календаря и предпросмотра видео.

Расширения

Ключевую роль в библиотеке играет класс Extensions, содержащий методы-расширений для HtmlHelper):

  • HtmlEditorFor — отображает редактор HTML на основе CKEditor 4
  • DatePickerFor — отображает bootstrap-style календарь
  • FileUploadFor — отображает элемент для загрузки файла
  • ThumbnailFor — отображает bootstrap-style prview для изображения
  • TextEditorFor — отображает bootstrap-style редактор
  • MultilineTextEditorFor — отображает многострочный bootstrap-style редактор
  • EmailEditorFor — отображает bootstrap-style редактор, который имеет HTML5 тип email
  • VideoPlayerEditorFor — отображает плеер если в поле записан url для видео опубликованного в YouTube, или Vimeo

Для того, чтобы обеспечить корректную работу всех расширений в пакет были добавлены некоторые файлы добавляющие файлы в структуру веб-приложения и некоторые зависимости. Рассмотрим их подробнее.

Структура пакета

После установки NuGet-пакета X.Scaffolding в Ваше веб-приложение добавятся такие элементы как:
Библиотека X.Scaffolding

  • Contentglobal.css — содержит основные стили для веб-приложения (за основу брался Modern UI [1])
  • Contentscaffolding.css — содержит стили для отдельных элементов управления генерируемых системой скаффолдинга ASP.NET MVC
  • Scriptsscaffolding.js — содержит общие для всего веб-приложения скрипты для инициализации подключаемых плагинов
  • ViewsSystemLogin.cshtml — шаблон страницы авторизации
  • Views_ViewStart.cshtml — страница для автоматического задания шаблона для всех представлений в проекте
  • favicon.ico — фирменная иконка

Модуль авторизации

Библиотека X.Scaffolding
Модуль авторизации выполнен на основе шаблона [2] с сайта bootsnipp.com

Кроме файлов добавляемым непосредственно пакетом X.Scaffolding в проект также добавляются некоторые другие пакеты и связанные с ними файлы. Рассмотрим их более детально.

Подключаемые пакеты NuGet

  • X.CKEditor [3] — WYSIWYG-редактор, для редактирования HTML (поскольку команда CKEditor еще не выпустила официальный NuGet пакет для 4 версии, то я сам решил это сделать)
  • chosen.jquery [4] — плагин для оформления красивых и удобных выпадающих списков с поиском. Более подробно рассматривается в статье [5], которую написал alizar [6]
  • Bootstrap Datepicker [7] — плагин, который позволяет добавлять элементы выбора даты в стиле Bootstrap
  • Microsoft ASP.NET MVC 5 [8] — поскольку библиотека в первую очередь рассчитана на расширение актуальной версии MVC, то была добавлена ссылка именно на эту версию
  • EntityFramework 6 [9] — то же касается и Entity Framework
  • Windows Azure Storage [10] — набор библиотек позволяющих удобнее работать с веб-приложениями размещенными в облаке
  • Bootstrap 3 [11] — думаю не стоит представлять этот фреймворк, тем более что начиная с Visual Studio 2013 базовый проект создается с уже подключенным пакетом bootstrap
  • PagedList.Mvc [12] — библиотека, которая позволяет с легкостью разбивать списки на «страницы». Кроме того, включает стили и код для реализации пейджинга в разметке шаблонов
  • Microsoft jQuery Unobtrusive Validation [13] — пакет для «ненавязчивой» валидации. Более подробно про него можно почитать в статье [14] которую написала Juty [15]

Присоединяйтесь!

Библиотека X.Scaffolding

Все желающие могут как ознакомится с исходным кодом библиотеки, так и расширить ее возможности.
Исходные коды проекта доступны на GitHub [16].

NuGet

Установить пакет можно из репозитория NuGet [17]: Install-Package xscaffolding

Disclaimer

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

  • сейчас библиотека рассчитана на то, что в проекте используется ASP.NET MVC 5 версии и Entiy Framework 6 версии
  • в веб-приложение при установке пакета добавляется фирменная favicon (обусловлено тем, что в большинстве своем установки пакета сейчас производятся для наших собственных проектов)
  • в веб-приложение при установке добавляется ссылка на пакет WindowsAzure.Storage, что может оказаться лишним для тех, кто не работает с Windows Azure

Впрочем, исходные коды библиотеки сейчас находятся открытом доступе. И кроме того, если будет достаточный интерес к библиотеке — я планирую создать пакет X.Scaffolding.Core, в котором не будет привязки к вышеупомянутым пакетам и будет отсутствовать favicon.

Автор: Ernado

Источник [18]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/asp-net-mvc/47418

Ссылки в тексте:

[1] Modern UI: http://en.wikipedia.org/wiki/Modern_UI_(design_language)

[2] шаблона: http://bootsnipp.com/snippets/featured/google-style-login

[3] X.CKEditor : https://www.nuget.org/packages/xckeditor/

[4] chosen.jquery: https://www.nuget.org/packages/chosen.jquery/

[5] статье: http://habrahabr.ru/post/124899/

[6] alizar: http://habrahabr.ru/users/alizar/

[7] Bootstrap Datepicker: https://www.nuget.org/packages/Bootstrap.Datepicker/

[8] Microsoft ASP.NET MVC 5: https://www.nuget.org/packages/Microsoft.AspNet.Mvc/

[9] EntityFramework 6: https://www.nuget.org/packages/EntityFramework/

[10] Windows Azure Storage: https://www.nuget.org/packages/WindowsAzure.Storage/

[11] Bootstrap 3: https://www.nuget.org/packages/bootstrap/

[12] PagedList.Mvc: https://www.nuget.org/packages/PagedList.Mvc/

[13] Microsoft jQuery Unobtrusive Validation: https://www.nuget.org/packages/Microsoft.jQuery.Unobtrusive.Validation/

[14] статье: http://habrahabr.ru/post/181758/

[15] Juty: http://habrahabr.ru/users/juty/

[16] GitHub: https://github.com/ernado-x/X.Scaffolding

[17] NuGet: https://www.nuget.org/packages/xscaffolding/

[18] Источник: http://habrahabr.ru/post/200692/