Как стать автором
Поиск
Написать публикацию
Обновить
-0.67

ASP *

Технология создания веб-приложений и веб-сервисов

Сначала показывать
Порог рейтинга
Уровень сложности

SimpleMvcCaptcha, или мой первый опыт Open Source

Время на прочтение5 мин
Количество просмотров1.6K
Disclaimer!
Я ни в коем случае не претендую на звание разработчика идеальной капчи, равно как и на изгобретателя чего-то нового. Все, что здесь написано, было сделано мной для познавательных целей и open source. И да, я осознаю, что написать свою капчу — это изобрести велосипед.

С чего все началось


Совсем недавно я начал разрабатывать свой пока небольшой проект на ASP.NET MVC 3. Суть его заключается в том, что посетители могут добавлять на него свои сообщения, которые впоследствии появляются в публичном доступе (кому интересно, что стоит за этим запутанным объяснением — ссылка будет в конце).

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

Первое, что пришло мне в голову, была ReCaptcha от Google. Установив ее и некоторое время попользовавшись, я окончательно понял, что этот монстр — совсем не для меня и не для большинства адекватных людей, тем более русскоязычных (вывод некоторых изображений не только не читается машинно, он и людьми то не может быть прочитан). Поискав другие решения, я, к своему сожалению, не нашел чего-то нормального для MVC 3, простого и ненавязчивого в использовании. Были разные мануалы как сделать то или иное, но готового решения «взял и использовал» как-то не встретилось. Поэтому решил изобрести велосипед написать свою капчу.
Читать дальше →

Reactive Extensions for JavaScript. Полное руководство

Время на прочтение7 мин
Количество просмотров41K
Хотите использовать Observable Collections? Слышали про Reactive Extensions? Нравится LINQ? Не нравится писать спагетти-код? Нужны монады? И все это на JavaScript?
Тогда прошу под кат

Реализация одностраничного приложения средствами History API в ASP.NET MVC

Время на прочтение11 мин
Количество просмотров10K
Добрый день уважаемые хабаровчане. На сайте уже не раз поднимался вопрос о проблеме создания одностраничных ajax приложений. С такой задачей некоторое время назад столкнулся и я. Однако я недоумевал, почему обладая возможностями html5 и мощью MVC я должен столько всего прописывать вручную, да еще и с помощью js.

Возможно именно [holywar=on]неприязнь к языку js[holywar=off] побудили меня создать простое решение, опирающиеся на возможности ASP.NET MVC. Далее, я подробно опишу проблемы, которые возникают при попытке создать одностраничное ajax приложение, и поэтапно рассмотрю создание полноценного решения.

Если стало интересно — добро пожаловать под кат (код и картинки прилагаются).
Читать дальше →

Кросспостинг в twitter, facebook, livejournal, vkontakte

Время на прочтение7 мин
Количество просмотров81K

Когда я писал проект crafthunters.com, я заметил что для раскрутки клиенты используют социальные сети. Пользовались виджетами и лайками, но по хорошему надо было попадать в ленту новостей. Кроме того, популярный вконтакте вывел новости на главную страницу в сентябре. Т.е. для распространения контента надо было адаптировать standalone блог для представления в социальных сетях, используя простую истину: попасть в ленту новостей популярных социальных сетей. Вначале это происходило вручную и приносило более половины траффика. Потом пришла идея это всё автоматизировать.
Популярными социальными сетями у нас были:
  • facebook
  • вконтакте
  • livejournal
  • твиттер

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

Далее я хочу представить реализацию кросспостинга под эти четыре социальные сети для asp.net mvc.
Читать далее

Ненавязчивая валидация в ASP.NET MVC3

Время на прочтение5 мин
Количество просмотров8.9K
Не так давно я начал разрабатывать сайты на ASP.NET MVC и в одном из моих проектов у меня появилась потребность в нестандартном валидаторе, который проверял бы обязательность заполнения элемента формы в зависимости от значения другого элемента. Именно об этом я и хочу рассказать.

Сайт разрабатывался на автомобильную тематику. Необходимость в валидаторе появилась на форме регистрации. Пользователь может зарегистрироваться как частное лицо и как автодиллер. Если пользователь хочет зарегистрироваться как автодиллер, то ему необходимо заполнить несколько дополнительных обязательных полей. Можно было конечно сделать регистрацию в несколько этапов, но хотелось чтобы весь процесс регистрации проходил за один шаг.
Читать дальше →

Собственная страница ошибки 404 на ASP.NET MVC

Время на прочтение6 мин
Количество просмотров27K
При разработке проекта на ASP.NET MVC возникла необходимость сделать собственную страницу ошибки 404. Я рассчитывал, что справлюсь с этой задачей за несколько минут. Через 6 часов работы я определил два варианта ее решения разной степени сложности. Описание — далее.
Читать дальше →

Дополнение к локализации ASP.NET MVC – Используем маршрутизацию

Время на прочтение4 мин
Количество просмотров2.8K
Дополнение к прошлому посту от Alex Adamyan, посвященный локализации в ASP.NET MVC приложениях. Хотя это материал относится к ASP.NET MVC 2, его можно смело использовать и в версии 3.

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

Также этот метод локализации не потребует трюк с OutputCache, как было описано в предыдущем посте.

Цель этого поста – возможность показать, как получить из URL-адреса вида /{culture}/{Controller}/{Action}... в Вашем приложении, URL-адрес вида /ru/Home/About.
Читать дальше →

Создание форм для глубоко вложенных View Model в ASP.NET MVC

Время на прочтение5 мин
Количество просмотров5.8K
Ёще один интересный пост от Jimmy Bogard, посвященный cозданию форм для глубоко вложенных View Model в ASP.NET MVC. Несмотря на то, что в нём постоянно идёт отсылка к ASP.NET MVC 2, информация актуальна и для 3-ей версии. Под хабракатом оригинальный пост в вольном переводе.

Познакомиться с шаблонами для редактирования

ASP.NET и Flex — дружба навек

Время на прочтение6 мин
Количество просмотров2.9K
Этот пост хотелось бы посвятить возможности интеграции двух платформ ASP.NET и Flex.

Предисловие

Как правило, Flash является прекрасным средством для создания насыщенных мультимедиа проектов, а с выходом ActionScript 3 и технологии Flex программировать стало одно удовольствие. При этом можно создавать и RIA, и desktop приложения (спасибо, Adobe AIR).

С другой стороны у нас ASP.NET — мощный инструмент для создания web-приложений. Можно использовать два совершенно разных подхода к построению приложения: либо использовать WebForms + Web Services, либо ASP.NET MVC, придерживаясь REST-стиля.
Прежде чем закончить лирическое отступление, хотелось бы обозначить инструменты, которые нам понадобятся.
Итак, это –
  1. Visual Studio 2010 Professional
  2. Flash Builder 4 Standard

Читать дальше →

Логирование .Net MVC 3 за 30 минут

Время на прочтение4 мин
Количество просмотров6.1K
Наличие системы логирования – уже давно узаконенное явление. Она позволяет, как защитить Вас от необоснованных обвинений в Вашу сторону, так и иметь возможность восстановить утерянные данные.

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

Вводная


Представьте, что Вы разрабатываете приложение, у которого нет технического задания. Требования и функционал постоянно меняются. И далеко не всегда зафиксированы определения «что есть что». Т.е. у Вас в любую минуту может поменяться все. Проект подразумевает связку MSSQL + ASP.Net MVC3 + скрипты на UI (куда же без них). Связка с БД организована через Linq. Так же важное условие, что коннект от web- приложения к БД идет от одного пользователя.
И ко всему времени на написание очень мало.

Какие варианты решения?

  • 1. Логирование на уровне БД. Есть разные способы. Как один из них – это универсальные триггеры (в интернете есть информация по уже готовым способам). Но тут возникает 2 проблемы:
    1. Что будет, если Вы начнете добавлять свои триггеры.
    2. Придется каждый раз передавать имя пользователя.

    Итог – много кода и время.
  • 2. Логирование на уровне web- приложения. В данном случае у Вас есть все что нужно. И запросы, и пользователь, и данные.
  • 3. Можно использовать и логирование IIS, но тогда Ваш лог находится в скупе с множеством других приложений. Ну и самое важное – Вы ограничены их функционал, и в будущем не сможете поменять логирование так как Вам надо.

Я выбрал путь решения – путь логирования на уровне web-приложения.
Итак, что нам понадобиться.

1. Создать таблицу в MSSQL
2. Написать классы для логирования и простейшего репозитория
3. Внедрить обработчик в Global.asax.cs
Читать дальше →

Поработаем с MongoDb

Время на прочтение4 мин
Количество просмотров108K


В текущее время появляется всё больше high-load проектов оперирующие колоссальным объемом данных. И уже нельзя обойтись классической реляционной моделью хранения этой информации. Всё более популярными становятся NoSQL базы данных (NoSQL — обозначает Not only SQL). Одной из таких баз данных является MongoDB, которая уже заслужила внимание к себе таких компаний как Disney, craiglist, foursquare. К тому же тут неоднократно писали о ней:
NoSQL, используя MongoDB, NoRM и ASP.NET MVC
Шардинг MongoDB на пальцах
Репликация MongoDB на пальцах

Это еще одна статья о работе с MongoDb в среде .net.

Что потребуется:
1. Скачайте (http://www.mongodb.org/downloads), распакуйте и запустите mongod (это сервер)
2. Драйвер (https://github.com/mongodb/mongo-csharp-driver/downloads)
3. Поехали

Читать дальше →

OAuth2 клиент для ASP.NET

Время на прочтение2 мин
Количество просмотров14K
OAuth2 – протокол авторизации, логическое развитие OAuth 1.0. Подробнее про него можно прочитать здесь.

Блуждая по интернету в поисках нормальной библиотеки OAuth клиента для .net я не нашёл ничего подходящего и решил написать сам, благо ничего сложного в этом нет. От библиотеки требуется производить три действия: выдавать ссылку на запрос кода авторизации, после возврата от авторизатора перенаправлять приложение на страницу запроса токена и далее производить запросы используя полученный токен.
Читать дальше →

Common Table Expressions и деление таблиц на страницы

Время на прочтение3 мин
Количество просмотров31K
Здравствуйте!

Common Table Expressions или по русский обобщенные табличные выражения – это технология, которая появилась в MS SQL Server 2005 и представляет собой одну из форм повторного использования результатов одного SQL запроса в другом.

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

CTE позволяет увеличить эффективность такого извлечения данных. Суть в том, что обычно для определения какие строки требуются для отображения определенной страницы, нам нужны ключевое поле и поле, по которому выполняется сортировка, которое, впрочем, даже не всегда нужно извлекать. А для генерации страницы обычно нужно большее количество столбцов но небольшое количество строк. Выйгрыш происходит за счет того, что для определения строк определенной страницы мы используем маленький и быстрый некластерный индекс, а для извлечения строк одной страницы – кластерный индекс но с небольшим количеством строк.
Читать дальше →

Ближайшие события

Приводя в порядок POSTs в ASP.NET MVC

Время на прочтение8 мин
Количество просмотров6.7K
В топике описывается один из профессиональных приёмов разработки ASP.NET MVC приложений, который позволяет значительно сократить количество повторяющегося кода в обработчиках POST действий форм. Несмотря, на то, что я узнал о нём ещё во времена первого издания ASP.NET MVC In Action и первой mvcConf, стиль изложения Jimmy Bogard мне показался очень простым и я решил опубликовать вольный перевод для тех, кто ещё не использует этот подход на практике.

Если вы это не используете, тогда мы идем к вам!

ASP.NET MVC в крупных проектах. Введение: Model Binding

Время на прочтение5 мин
Количество просмотров13K

Вместо вступления


Пока готовилась эта статья, вышел замечательный пост 1andy Организуем view models в ASP.NET MVC, в котором разобрано многое из того, что я хотел бы поведать читателю. По этой причине я решил опустить большое вводное вступление и перейти непосредственно к практическим советам.
Читать дальше →

Declarative HTML Helpers

Время на прочтение3 мин
Количество просмотров14K

@functions @helpers


Большинство хелперов в asp.net mvc 3 это методы-расширения класса System.Web.Mvc.HtmlHelper.
Однако не всегда удобно создавать отдельный статический класс для 2-3 хелперов необходимых в одной вьюшке. И совсем неудобно создавать хелперы возвращающие большие блоки html-кода: ни подсветки синтаксиса, ни интеллисенса, ни прочих плюшек.

Для решения этих проблем в Razor есть два замечательных блока. Они позволяют создавать хелперы непосредственно в .cshtml-файлах.

image
Круто! но зачем это нужно?

Razor: вывод секций в мастер-страницах мастер-страниц

Время на прочтение4 мин
Количество просмотров21K
Всем доброго времени суток. С недавних пор занимаюсь активной разработкой на ASP.NET MVC 3 & Razor «непростого» веб-приложения и вот сегодня наткнулся на проблему, которая опытными разработчиками, может быть, уже исследована и решена, но вот новичкам информация ниже, думаю и надеюсь, окажется полезной.

Описание проблемы


Пусть в приложении есть пара представлений: View.cshtml и ViewWithSide.cshtml, а ещё есть две мастер-страницы: Layout.cshtml и LayoutWithSide.cshtml, причём первая является мастер-страницей для второй. Как можно догадаться по именам файлов, XxxWithSide.cshtml добавляет в странице боковую панель, формат вывода которой определён в мастер странице, а внутренности — в представлении. В главной мастер-странице Layout помимо основной разметки определён вывод секции «navigation», которая задаётся в представлениях.

И вот когда в коде ViewWithSide определена секция «navigation», а в LayoutWithSide нет, потому что эта секция должна обрабатываться «следующей» мастер-страницей (Layout), то при попытке открыть ViewWithSide в приложении будет выдана ошибка: The following sections have been defined but have not been rendered for the layout page "~/Views/Shared/LayoutWithSide.cshtml": «navigation» (Секция «navigation» определена, но нигде не выведена в мастер-странице).

Идея решения этой проблемы довольно проста: нужно передать вывод этой секции «следующей» мастер-странице, а там пусть сами разбираются.
Как это решается и примеры кода есть подкатом

Организуем view models в ASP.NET MVC

Время на прочтение4 мин
Количество просмотров32K


В интернете полно примеров вроде «Делаем вики на ASP.NET MVC за 15 минут». Проблема таких примеров в том, что они используют VideData или ViewBag для передачи данных в View. Для генерации форм используются нетипизированные методы вроде Html.TextBox(). А для получения данных из форм просто параметры к методам контроллера, или хуже того – сами сущности из ORM.

Это может быть прекрасно с точки зрения того, кто в жизни имеет дело только с созданием таких «видео уроков». Но в немного более сложных случаях вы, конечно же, захотите иметь строго типизированные модели, использовать строго типизированные методы вроде Html.TextBoxFor(m=>..), и получать в методе контроллера из формы ровно то, что хотите получить и при этом держать все модели в консистентном виде.

Итак, правила, если вы хотите разрабатывать в MVC:
Читать дальше →

ASP.NET MVC: Привязка данных модели, которые содержат изображения

Время на прочтение5 мин
Количество просмотров9.2K
Привязка данных(binding) является достаточно удобным средством ASP.NET MVC. Удобно оно в первую очередь тем, что позволяет скрыть реализацию преобразования данных между данными из модели и данными HTTP запроса.
В своих проектах я часто сталкиваюсь с необходимостью сохранять различные данные типа blob и image. В этой статье я бы хотел показать, как можно легко организовать и использовать привязку данных из модели, которые содержат различные изображения. Для примера я взял учебный проект MVC Music Store и решил его подправить — добавить возможность изменять изображение обложки музыкального альбома. При написании данной статьи, я использовал версию APS.NET MVC 3 и Razor.
Читать дальше →

Использование XSLT-шаблонизатора в ASP.NET MVC

Время на прочтение7 мин
Количество просмотров4.8K
Сейчас при разработке широко используется шаблон MVC, подразумевающий разделение модели данных, представления и логики работы. Довольно известная реализация этого шаблона в web-разработке — ASP.NET MVC Framework. Не так давно вышла третья версия этого фреймворка, в которой есть два варианта реализации представлений: ASPX и Razor. Оба движка имеют достаточно широкий набор возможностей, но в этой публикации я попробую описать использование другого средства для реализации представлений — XSLT-шаблоны.
Читать дальше →