Архив

Публикации с меткой ‘asp.net mvc’

ASP.NET MVC. Перехватываем нулевую модель (null model handling).

19 декабря 2012 Нет комментариев
Много раз сталкивался с тем, что контроллеры в ASP.NET MVC со временем начинают обрастать бизнес-логикой или, что еще хуже, «сервисной» логикой (создание/удаление файлов, редактирование каких-нибудь конфигов и тд.). Слова «контроллеры», «контроллер» и «вьюха» сейчас будут повторяться слишком часто, но ничего не поделать :). Так вот,  такие контроллеры сложно тестировать и поддерживать. В идеале, контроллер должен содержать только логику по формированию представления (View), а на деле — контроллер превращается в своеобразный комбайнер (собиратель), который по частям заполняет модель отовсюду, откуда только можно, выглядеть это может примерно так:

    public class AbstractController : Controller
    {
        public ActionResult Index()
        {
            var model = new SomeModel();
            model.Property1 = SomeService1.GetProperty1();
            model.Property2 = AnotherService.GetProperty2();
            SomeStrangeHelper.DoSomethingWithModel(model);
            ...

            return View(model);
        }
    }

[Читать далее…]

ScriptManager для ASP.NET MVC. Третий вариант.

18 декабря 2012 Нет комментариев
Очередная вариация на тему ScriptManager’а, это скорее отрефакторенный вариант второго решения. В прошлый раз мы использовали HttpModule, но из-за особенностей обработки запросов модулем его использование влечет за собой накладные расходы, поскольку любой запрос, будь то файл стилей или файл с клиентскими скриптами или же изображение, проходит через всю цепочку модулей, которые зарегистрированы в ASP.NET приложении. В предыдущем скрипт-менеджере мы делали проверку, что текущий запрос — это запрос именно html-страницы, и если это так, то мы запускали обработку html. Однако, по умолчанию, в приложениях ASP.NET MVC весь выходной html-код генерится контроллером и вьюхой, а если это и ваш случай, то можно сделать все проще, мы будем использовать ActionFilterAttribute.

[Читать далее…]

ScriptManager для ASP.NET MVC. Второй вариант.

11 августа 2012 Нет комментариев
В продолжении предыдущего поста выкладываю стопроцентно-"трушный" вариант ScriptManager`а для ASP.NET MVC, с которым ваш сайт пройдет HTML-валидацию. Как я уже говорил, общая идея заключается в том, что нам нужно перехватить ответ сервера и изменить его перед отправкой. Перехватить Response нам поможет HttpModule.

[Читать далее…]

ScriptManager для ASP.NET MVC.

10 декабря 2011 5 комментариев
Открываю новый цикл статей по ASP.NET MVC. Все описанные плюшки реализованы в нашей CMS. Начну пожалуй с такой штуки, как ScriptManager. Наверное каждый, кто занимался разработкой на ASP.NET использовал этот удобный функционал для добавления скриптов и файлов-стилей на страницу. ScriptManager широко применяется в классических ASP.NET Webforms и по понятным причинами отсутствует в ASP.NET MVC, я очень активно искал аналоги этого класса для ASP.NET MVC, но ничего вразумительно найти не смог, поэтому пришлось писать свой. Дело было весной, поэтому возможно, что сейчас уже есть более хорошие решения, буду признателен за ссылки на них.
[Читать далее…]

Длительное затишье.

26 мая 2011 4 комментария
Итак, причина долгой неактивности блога — разработка CMS на ASP.NET MVC и как следствие — огромная нехватка времени на ведение блога. Я так и не написал вторую часть про jsTree, статьи про jQgrid, которые планировал очень-очень давно. Вместо этого всего велась довольно объемная работа по созданию архитектуры цмски, многочисленные переделки, попытки интеграции в движок перечисленных выше джаваскриптовых плагинов.

Что в результате вышло ? Сейчас система находится на стадии "стабилизации", новый функционал больше не пишется, исправляются некоторые незначительные баги, допиливаются некоторые "удобства", проводится рефакторинг. В скором времени (неделя — месяц), основной сайт webferia.ru будет переведен на эту систему, после чего здесь я выложу ссылку на демо-версию цмс. Далее, на примере этой системы будет создан ряд статей, касающихся ASP.NET MVC 3, Razor View Engine, jsTree и jqGrid с примерами интеграции с ASP.NET MVC 3.

Что будет в системе:

  1. ЧПУ отличный от стандартного ASP.NET MVC — обычная классическая иерархическая структура.
  2. Создание/редактирование материалов через рич текст эдитор
  3. Возможность добавления виджетов.
  4. Создание меню на основе jsTree.
  5. В качестве источника данных по умолчанию используется XML. Но ничто не мешает подключить собственный провайдер данных.

Админский интерфейс будет весьма скуден, но эта первая версия планировалась именно такой, причем даже без виджетов.

Дальнейшее развитие системы будет зависеть от проявленного к ней интереса:). То, что получилось, вышло весьма хорошо на мой взгляд:). Да, и самое главное, мне нужно придумать название, может что-нибудь предложите ?

Partial Views и Areas в ASP.NET MVC.

23 февраля 2011 Нет комментариев
Всех с праздником :).

В ASP.NET MVC 2 появилось такое новое понятие как области (Areas), а поскольку релиз второй версии MVC вышел уже почти год назад, то понятие это уже далеко не новое, и проблема, с которой я недавно столкнулся, должна была к настоящему времени ну хоть кого-нибудь затронуть, однако, на просторах сети ее описания не нашлось. Смысл Areas в том, чтобы разделить большой проект на несколько маленьких, не создавая отдельных проектов в солюшене. Т.е., например, есть веб-приложение, состоящее из некоторой общей публичной части, какой-то административной части, блога и форума, каждая из частей выносится в отдельную независимую область (area), в результате все лежит в одном проекте, но в то же время разграничено по смысловой нагрузке. Это очень удобно (проверено лично). Появляется возможность иметь одноименные контроллеры, вьюхи и тд.

Это было как введение, на самом деле пост не об Areas. Речь пойдет о Partial Views (частичные представления), которые находятся в некоторой области (Area). Partial Views — это аналог User Controls в классическом ASP.NET, которые могут использоваться для отрисовки каких-то кусков страницы, например блока новостей.
[Читать далее…]

Categories: ASP.NET Tags: , , ,

ASP.NET MVC 3 Релиз.

24 января 2011 Нет комментариев
Новость немного запоздалая, но важная. Команда разработчиков ASP.NET выпустила очередную версию фреймворка ASP.NET MVC 3. Загружать я советую с Microsoft Web Platform Installer потому что отдельным пакетом новая версия у меня устанавливаться не захотела по непонятным причинам. Установка весьма долгая.

Новичкам рекомендую почитать обучающие материалы ASP.NET MVC на русском языке. В новой версии помимо всего прочего добавлена поддержка новой View Engine под названием Razor. Я не стал пробовать этот движок разметки в бета-версиях ASP.NET MVC 3, поэтому в релизе он произвел на меня очень положительное впечатление. Вообщем, сейчас с Razor`ом делать вьюхи стало офигительно удобно, кто сомневается — не сомневайтесь, разница в удобстве просто огромна. Ближе к концу недели постараюсь сделать маленький пост о Razor. Производительность Razor тоже на уровне, результаты тестов здесь. Книги по Razor и примеры использования можно бесплатно скачать здесь.

Categories: ASP.NET Tags: , ,

Редактирование карты сайта Web.sitemap. How to edit Web.sitemap.

19 ноября 2010 Нет комментариев
Любой разработчик ASP.NET, причем не важно, будь то MVC или WebForms, знает про такой класс как SiteMap. Этот класс предоставляет большие возможности для навигации по сайту, он может быть использован как DataSource к TreeView или Menu. Я не буду рассказывать про то, как этим классом пользоваться, как, где, куда создавать и что записывать в Web.sitemap — об этом информации полно, лучше расскажу я про редактирование. В дальнейшем, говоря о карте сайта, я буду говорить про стандартный функционал ASP.NET, а не про что-либо еще.

[Читать далее…]

Categories: ASP.NET Tags: , ,

Какой должна быть хорошая CMS ?

Сейчас в свободное время я делаю CMS на ASP.NET MVC. Зачем и для чего ? Просто хочется свою и на дотнете, плюс еще у меня имеется неплохой опыт работы с различными системами управления контентом, и за время работы с ними сложилось некоторое представление об удобной CMS. Но тем не менее, свежий взгляд со стороны будет только на пользу. Поэтому, уважаемые посетители, поскольку большая часть из вас как-то крутится в СЕО-среде и сфере веб-разработки, а следовательно, вы имеете опыт работы с системами управления контентом, прошу высказаться о том, какой должна быть по вашему мнению хорошая CMS, что в ней быть должно, а чего накручивать накручивать не нужно.

Что уже реализовано:

  • СЕО (SEO): title, description, keywords как полагается, ЧПУ, автогенерация карты сайта (sitemap).
  • Плагины (Plugins): FCKeditor, LightBox и другие с возможностью настройки и добавления.
  • Темы оформления и шаблоны: использование различных тем.
  • Модули, компоненты и виджеты (Modules, components, widgets): богатые возможности для разработки собственных расширений для любой задачи с добавлением на любые необходимые страницы в любом месте и в любом количестве — последние новости, поиск, облако тегов и тд.
  • Программирование: ASP.NET MVC, jQuery, AJAX, TDD — Юнит-тестирование с использованием Google Moq (unit testing google moq). Различные провайдеры данных — возможность использования реляционных баз данных, XML, SQL Lite или любой другой источник данных, все что нужно сделать — лишь переключить используемый провайдер. Использование паттернов Strategy, Adapter, Singleton, Template Method и др.

Что планируется:

  • Membership провайдер и работа с пользователями. Сейчас функционал для работы с пользователями отсутствует.
  • Silverlight-контролы и сервисы.
  • Возможно в дальнейшем будет использован какой-либо IOC (DI) фреймворк.

Жду ваших комментариев и советов.

ASP.NET MVC 2 Релиз.

16 марта 2010 2 комментария
11 марта 2010 года наконец-то вышел долгожданный релиз ASP.NET MVC 2 — это технология, которая в недалеком будущем вероятно заменит классические ASP.NET WebForms. Исходники, информацию о нововведениях, документацию, а также инструкцию по апдейту своих проектов с версии 1.0 вы можете получить на официальном блоге ведущего разработчика Phil`a Haack`a.
Categories: ASP.NET Tags: ,