ASP.NET MVC → Обработка всех исключений в контроллерах с помощью атрибута
Всё мы знаем, что в ASP.NET MVC есть такой атрибут
Но нигде, в том же MSDN не сказано (ткните меня носом дайте ссылку где это написано, если я просмотрел), что он обрабатывает только исключения, устанавливающие код ответа сервера в 500.
Посмотрев на исходный код
Не знаю, как вам, а мне удобнее при возникновении исключения, чтобы пользователи видели специальную страницу для этого, а не «жёлтую страницу смерти» или вообще как браузер отображает стандартную для него страницу с кодом ответа сервера (зависит от настроек в Web.config, но об этом позже).
HandleErrorAttribute, который как сказано в MSDN Представляет атрибут, используемый для обработки исключения, вызываемого методом действия.
Но нигде, в том же MSDN не сказано (
Посмотрев на исходный код
HandleErrorAttribute легко убедиться в этом. Там имеются следующие строки:// If this is not an HTTP 500 (for example, if somebody throws an HTTP 404 from an action method),
// ignore it.
if (new HttpException(null, exception).GetHttpCode() != 500) {
return;
}
Не знаю, как вам, а мне удобнее при возникновении исключения, чтобы пользователи видели специальную страницу для этого, а не «жёлтую страницу смерти» или вообще как браузер отображает стандартную для него страницу с кодом ответа сервера (зависит от настроек в Web.config, но об этом позже).
ASP.NET MVC → Вышла новая версия opensource движка nopCommerce с поддержкой мобильных устройств
Первого февраля вышла новая версия nopCommerce 2.40 – движка для электронной коммерции с открытым кодом, написанного на ASP.NET MVC 3. Основным нововведением является поддержка мобильных устройств. Примечательно то, что nopCommerce является первой системой, которая добавила эту поддержку абсолютно бесплатно (у magento и prestashop это функционал платный). Тоже самое можно сказать и про существующие open source приложения ASP.NET (имеются ввиду real-world, а не тестовые примеры). По-умолчанию, это функция отключена (не всем владельцам магазинов она нужна, да поддержка была только-только добавлена, так что не исключены какие-то баги).
ASP.NET MVC → Динамическая проверка прав доступа для ASP.NET MVC из песочницы
В ASP.NET MVC есть встроенная возможность ограничить доступ к тем или иным контроллерам и их действиям. Эта возможность предоставляется атрибутом
AuthorizeAttribute, но возможностей и гибкости ему явно не хватает (точнее их практически нет). Права можно определить только на этапе разработки и без повторной компиляции никак не изменить. А ведь создать собственный атрибут, обладающий необходимым функционалом совсем не сложно..NET → Доступна запись вебинара “Будущее ASP.NET и Visual Studio 11 для веб-разработчиков”

26 января состоялся бесплатный вебинар на тему нововведений веб-платформе Microsoft и среде разработки Visual Studio 11 для веб-разработчиков. Спасибо всем участникам вебинара (вас было более 170 человек), в том числе за интересные вопросы после сессии.
Я рад сообщить, что для загрузки доступно видео вебинара, которое вы можете легко скачать по следующей ссылке “Нововведения в Visual Studio 2011 для веб-разработчиков”(ссылка обновлена). Видео доступно как для онлайн-просмотра, так и для загрузки (~40 Mb, wmv).
Кроме того, вы можете загрузить файл презентации (pptx) по следующей ссылке с сайта docs.com.
Веб-разработка → Необычно-экономное использование 1С: Предприятие 8 на Asp.Net-хостинге
Под словом «необычное» в заголовке понимается размещение информационной базы 1С: Предприятие
удаленно на стороне Asp.Net-провайдера, тарифный план которого включает использование
MSSQL. Экономия достигается за счет того, что компания не приобретает дорогостоящий
MSSQL-сервер и лишние лицензии 1С: Предприятие, а ограничивается покупкой 1С-сервера,
который во многих случаях уже имеется. На хостинг-провайдере может разместиться
веб-сайт, работающий на данных 1С: Предприятие. За размещение, архивирование и бесперебойную
работу базы данных и веб-сайта отвечает хостинг-провайдер.
Технология получила название Elisy Open Infobase (Открытая информационная база).
Полученное решение с одной стороны поддерживает веб-интерфейс средствами Asp.Net,
а с другой стороны 1С-интерфейс родными средствами 1С: Предприятие 8.2/8.1. Каждая
из технологий добавляет свои преимущества и усиливает общий эффект. Данные, введенные
в 1С: Предприятие, доступны в веб-интерфейсе моментально, а не с задержкой, как в
других традиционных способах, через экспортно-импортные механизмы такие как COM,
файлы обмена или явный/неявный запуск экспорта/импорта.

удаленно на стороне Asp.Net-провайдера, тарифный план которого включает использование
MSSQL. Экономия достигается за счет того, что компания не приобретает дорогостоящий
MSSQL-сервер и лишние лицензии 1С: Предприятие, а ограничивается покупкой 1С-сервера,
который во многих случаях уже имеется. На хостинг-провайдере может разместиться
веб-сайт, работающий на данных 1С: Предприятие. За размещение, архивирование и бесперебойную
работу базы данных и веб-сайта отвечает хостинг-провайдер.
Технология получила название Elisy Open Infobase (Открытая информационная база).
Полученное решение с одной стороны поддерживает веб-интерфейс средствами Asp.Net,
а с другой стороны 1С-интерфейс родными средствами 1С: Предприятие 8.2/8.1. Каждая
из технологий добавляет свои преимущества и усиливает общий эффект. Данные, введенные
в 1С: Предприятие, доступны в веб-интерфейсе моментально, а не с задержкой, как в
других традиционных способах, через экспортно-импортные механизмы такие как COM,
файлы обмена или явный/неявный запуск экспорта/импорта.

.NET → Учебный курс. Работа с параллелизмом с Entity Framework в приложении ASP.NET MVC
Это заключительная часть цикла статей, посвященного разработке с помощью Entity Framework и ASP.NET MVC 3. Первые главы вы можете найти по следующим ссылкам:

- Создание модели данных Entity Framework для приложения ASP.NET MVC
- Реализация базовой CRUD-функциональности с Entity Framework в приложении ASP.NET MVC
- Сортировка, фильтрация и разбиение по страницам с Entity Framework в приложении ASP.NET MVC
- Создание сложной модели данных для приложения ASP.NET MVC
- Создание сложной модели данных для приложения ASP.NET MVC, часть 2
- Загрузка данных с Entity Framework в приложении ASP.NET MVC
- Обновление связанных данных с помощью Entity Framework в приложении ASP.NET MVC

.NET → Учебный курс. Обновление связанных данных с помощью Entity Framework в приложении ASP.NET MVC
Это продложение цикла статей, посвященого разработке с помощью Entity Framework и ASP.NET MVC 3. Первые главы вы можете найти по следующим ссылкам:
Результаты представлены на иллюстрациях.

- Создание модели данных Entity Framework для приложения ASP.NET MVC
- Реализация базовой CRUD-функциональности с Entity Framework в приложении ASP.NET MVC
- Сортировка, фильтрация и разбиение по страницам с Entity Framework в приложении ASP.NET MVC
- Создание сложной модели данных для приложения ASP.NET MVC
- Создание сложной модели данных для приложения ASP.NET MVC, часть 2
- Загрузка данных с Entity Framework в приложении ASP.NET MVC
Результаты представлены на иллюстрациях.

ASP.NET MVC → Создание собственного элемента управления CheckBoxList
Предисловие
В данной статье будет рассмотрена возможность создания собственного элемента управления и его использования в рамках нового проекта на ASP .NET MVC 3.0. Все написанное ниже является точкой зрения автора и может не совпадать с распространенными или общепризнанными методами создания контролов, поэтому критика и комментарии приветствуются.
Введение
Вероятно, многие пользователи, которые ранее работали в своих проектах с WinForms или ASP .NET WebForms, замечали, что Html хелперы в проекте ASP .NET MVC не предоставляют возможность создания такого элемента управления, как CheckBoxList, который мог бы быть полезен в сложных формах фильтров данных или при множественном выборе не структурированных данных, будь то в профиле о пользователе или при добавлении нового топика на хабрахабр. Конечно, никто не запрещает использовать одиночный CheckBox или CheckBoxFor, но будет ли работа с такой группой чекбоксов удобной, а код легко расширяемым, понятным сопровождающему и защищенным от дублирования,- это далеко не последние вопросы для программиста, который планирует использовать свои наработки в будущих проектах. А если принять во внимание, что мы можем добавить к нашему элементу управления некоторые полезные опции для его визуального отображения, то необходимость его создания становится все более и более очевидной.
ASP.NET MVC → Расширение функционала тегов Page/MasterPage/UserControl в ASP.NET MVC из песочницы
Недавно начал переводить старый самописный движок с PHP на ASP.NET и столкнулся с несколькими моментами, связанными с шаблонами Smarty и возможностями представлений ASP.NET MVC. Сразу оговорюсь, что подход можно применять и для веб-проектов, но там, возможно, потребуется допилка. Итак.
Во-первых, с самого начала возникла необходимость из шаблона обращаться к методам основного объекта веб-приложения (назовем его Main) — например, конфигурация, менеджер тем, к методам вызывающего контроллера и так далее. Стандартный класс System.Web.Mvc.ViewPage не предоставляет удобного функционала для этого. Конечно, можно добраться до свойства ViewContext.Controller, сделать приведение типа и работать в шаблоне с кодом вида <%=((IndexController)ViewContext.Controller).CurrentTheme.Name%>, но тут возникает вопрос читабельности кода и удобства его написания вообще. Я пошел по пути расширения функционала System.Web.Mvc.ViewPage (а заодно System.Web.Mvc.MasterPage и System.Web.Mvc.UserControl) и добавления в него свойства ControlHelper, которое возвращает объект-помощник, делающий доступными необходимые возможности.
Во-вторых, возникла необходимость в представлениях не задавать прямой путь MasterPageFile, а размечать его дополнительными тегами а-ля «CurrentTheme.SiteMaster», «UserTheme.SiteMaster» и т.п. К сожалению, при записи подобной строки в атрибут MasterPageFile директивы @Page я получал ошибку синтаксического анализатора, ругавшегося на отсутствие файла "~/Views/{CurrentTheme.SiteMaster}". Единственное найденное решение — создание своего атрибута для директивы @Page, например MasterPagePath:
Во-первых, с самого начала возникла необходимость из шаблона обращаться к методам основного объекта веб-приложения (назовем его Main) — например, конфигурация, менеджер тем, к методам вызывающего контроллера и так далее. Стандартный класс System.Web.Mvc.ViewPage не предоставляет удобного функционала для этого. Конечно, можно добраться до свойства ViewContext.Controller, сделать приведение типа и работать в шаблоне с кодом вида <%=((IndexController)ViewContext.Controller).CurrentTheme.Name%>, но тут возникает вопрос читабельности кода и удобства его написания вообще. Я пошел по пути расширения функционала System.Web.Mvc.ViewPage (а заодно System.Web.Mvc.MasterPage и System.Web.Mvc.UserControl) и добавления в него свойства ControlHelper, которое возвращает объект-помощник, делающий доступными необходимые возможности.
Во-вторых, возникла необходимость в представлениях не задавать прямой путь MasterPageFile, а размечать его дополнительными тегами а-ля «CurrentTheme.SiteMaster», «UserTheme.SiteMaster» и т.п. К сожалению, при записи подобной строки в атрибут MasterPageFile директивы @Page я получал ошибку синтаксического анализатора, ругавшегося на отсутствие файла "~/Views/{CurrentTheme.SiteMaster}". Единственное найденное решение — создание своего атрибута для директивы @Page, например MasterPagePath:
<%@ Page Language="C#" MasterPagePath="{CurrentTheme.SiteMaster}" Inherits="..." %>Блог компании Microsoft → Учебный курс. Загрузка данных с Entity Framework в приложении ASP.NET MVC
Это продложение цикла статей, посвященого разработке с помощью Entity Framework и ASP.NET MVC 3. Первые главы вы можете найти по следующим ссылкам:
На иллюстрации изображены результаты нашей работы.
- Создание модели данных Entity Framework для приложения ASP.NET MVC
- Реализация базовой CRUD-функциональности с Entity Framework в приложении ASP.NET MVC
- Сортировка, фильтрация и разбиение по страницам с Entity Framework в приложении ASP.NET MVC
- Создание сложной модели данных для приложения ASP.NET MVC
- Создание сложной модели данных для приложения ASP.NET MVC, часть 2
На иллюстрации изображены результаты нашей работы.