Обновленную версию этого учебника доступен здесь с последней версией Visual Studio. An updated version of this tutorial is available here using the latest version of Visual Studio. Использует новое учебное ASP.NET Core MVC, который предоставляет многих усовершенствования, внесенные через этот учебник. The new tutorial uses ASP.NET Core MVC, which provides many improvements over this tutorial.
В этом руководстве описывается модель MVC ASP.NET Core с контроллерами и представлениями. This tutorial teaches ASP.NET Core MVC with controllers and views. Страницы Razor — это новая альтернатива в ASP.NET Core 2.0, представляющая собой основанную на страницах модель программирования, которая упрощает и повышает эффективность создания пользовательского веб-интерфейса. Razor Pages is a new alternative in ASP.NET Core 2.0, a page-based programming model that makes building web UI easier and more productive. Рекомендуем вам сначала попробовать изучить руководство по Razor Pages, прежде чем использовать версию для MVC. We recommend you try the Razor Pages tutorial before the MVC version. Руководство по Razor Pages: The Razor Pages tutorial:
- проще для выполнения; Is easier to follow.
- охватывает дополнительные возможности; Covers more features.
- является предпочтительным подходом для разработки новых приложений. Is the preferred approach for new application development.
Этот учебник поможет основы создания приложения web ASP.NET MVC 5 с помощью Visual Studio 2017. This tutorial teaches you the basics of building an ASP.NET MVC 5 web app using Visual Studio 2017. Последний исходный код для руководства находится на GitHub. The final source code for the tutorial is located on GitHub.
Вам потребуется учетная запись Azure, чтобы развернуть это приложение в Azure: You need an Azure account to deploy this app to Azure:
- Вы можете открыть учетную запись Azure бесплатно -вы получаете кредиты можно использовать для опробования платных служб Azure и даже в том случае, если они используются, вы сохраняете учетную запись и использовать бесплатные службы Azure. You can open an Azure account for free — You get credits you can use to try out paid Azure services, and even after they’re used up you can keep the account and use free Azure services.
- Вы можете активировать преимущества подписчика MSDN -ваша подписка MSDN предоставляет вам кредиты каждый месяц, который можно использовать для оплаты служб Azure. You can activate MSDN subscriber benefits — Your MSDN subscription gives you credits every month that you can use for paid Azure services.
Начало работы Get started
Начните с установки Visual Studio 2017. Start by installing Visual Studio 2017. Откройте Visual Studio. Then, open Visual Studio.
Visual Studio является интегрированной среды разработки или интегрированной среды разработки. Visual Studio is an IDE, or integrated development environment. Так же, как использовать Microsoft Word для записи документов, вы используете интегрированную среду разработки для создания приложений. Just like you use Microsoft Word to write documents, you’ll use an IDE to create applications. В Visual Studio имеется список внизу отображаются различные параметры, доступные для вас. In Visual Studio, there’s a list along the bottom showing various options available to you. Имеется также меню, которое предоставляет еще один способ выполнения задач в интегрированной среде разработки. There’s also a menu that provides another way to perform tasks in the IDE. Например, вместо выбора новый проект на начальной страницы, можно использовать в строке меню и выберите файл > новый проект. For example, instead of selecting New Project on the Start page, you can use the menu bar and select File > New Project.

Создание первого приложения Create your first app
На начальной страницывыберите новый проект. On the Start page, select New Project. В новый проект диалоговом окне выберите Visual C# категории слева, затем Web, а затем выберите веб-приложение ASP.NET (.NET Framework) шаблона проекта. In the New project dialog box, select the Visual C# category on the left, then Web, and then select the ASP.NET Web Application (.NET Framework) project template. Назовите проект «MvcMovie», а затем выберите ОК. Name your project "MvcMovie" and then choose OK.

В новое веб-приложение ASP.NET диалоговом окне выберите MVC и выберите ОК. In the New ASP.NET Web Application dialog, choose MVC and then choose OK.

Visual Studio используется шаблон по умолчанию для проекта ASP.NET MVC, который вы только что создали, поэтому у вас есть рабочее приложение прямо сейчас не выполняя никаких действий! Visual Studio used a default template for the ASP.NET MVC project you just created, so you have a working application right now without doing anything! Это связано с простых «Hello World!» This is a simple "Hello World!" проекта, а вот отлично подходит для запуска приложения. project, and it’s a good place to start your application.

Нажмите клавишу F5 , чтобы начать отладку. Press F5 to start debugging. При нажатии клавиши F5, Visual Studio запускает IIS Express и запускает веб-приложения. When you press F5, Visual Studio starts IIS Express and runs your web app. Затем Visual Studio запустит браузер и откроется домашняя страница приложения. Visual Studio then launches a browser and opens the application’s home page. Обратите внимание, что говорит в адресной строке браузера localhost:port# и не что-либо типа example.com . Notice that the address bar of the browser says localhost:port# and not something like example.com . Это потому, что localhost всегда указывает на локальном компьютере, который выполняется, в этом случае приложение, вы только что выполнили. That’s because localhost always points to your own local computer, which in this case is running the application you just built. При запуске веб-проекта Visual Studio для веб-сервера используется случайный порт. When Visual Studio runs a web project, a random port is used for the web server. На рисунке ниже номер порта — 1234. In the image below, the port number is 1234. При запуске приложения вы увидите другой номер порта. When you run the application, you’ll see a different port number.

Готовые этот шаблон по умолчанию дает Home , Contact , и About страниц. Right out of the box this default template gives you Home , Contact , and About pages. На следующем рисунке не показывает Главная, о, и контакт ссылки. The image below doesn’t show the Home, About, and Contact links. В зависимости от размера окна браузера может потребоваться щелкнуть значок навигации, чтобы найти по следующим ссылкам. Depending on the size of your browser window, you might need to click the navigation icon to see these links.

Приложение также предоставляет поддержку для регистрации и входа. The application also provides support to register and log in. Следующий шаг — изменить работу этого приложения и немного поговорим об ASP.NET MVC. The next step is to change how this application works and learn a little bit about ASP.NET MVC. Закройте приложение ASP.NET MVC и изменим код. Close the ASP.NET MVC application and let’s change some code.
Список действующие руководства, см. в разделе MVC рекомендуется статьи. For a list of current tutorials, see MVC recommended articles.
Это приложение работает в Azure см. в разделе See this app running on Azure
Вы действительно хотите см. по завершении сайт, запущенный в качестве активного веб-приложения? Would you like to see the finished site running as a live web app? Полную версию приложения можно развернуть учетную запись Azure, просто нажав кнопку ниже. You can deploy a complete version of the app to your Azure account by simply clicking the following button.
Требуется учетная запись Azure для развертывания этого решения в Azure. You need an Azure account to deploy this solution to Azure. Если у вас нет учетной записи, воспользуйтесь одним из следующих параметров для ее создания. If you don’t already have an account, use one of the following options to create one:
- Открыть учетную запись Azure бесплатно -вы получаете кредиты можно использовать для опробования платных служб Azure и даже в том случае, если они используются, вы сохраняете учетную запись и использовать бесплатные службы Azure. Open an Azure account for free — You get credits you can use to try out paid Azure services, and even after they’re used up you can keep the account and use free Azure services.
- Активируйте преимущества для подписчиков Visual Studio -ваша подписка Visual Studio предоставляет вам кредиты каждый месяц, который можно использовать для оплаты служб Azure. Activate Visual Studio subscriber benefits — Your Visual Studio subscription gives you credits every month that you can use for paid Azure services.
Я пишу сайты на asp.net mvc. В этих 16 главах я хочу рассказать, как я это делаю. Это некий учебник-справочник всех тех знаний, которые я накопил в течение трех лет.
Почему именно asp.net mvc
ASP.NET MVC я люблю потому что:
- Это .net. Я знаю .net и С#.
- Это компилируемый код.
- Это не ASP.NET WebForms, я работаю с html-кодом.
- Используется MVC-паттерн.
- Visual Studio – самое популярное средство разработки, в котором есть IntelliSense.
- Отличные инструменты отладки.
Всё это позволяет мне быстро и грамотно разрабатывать приложения. Главное – быстро.
Для работы нам понадобится
Оглавление
P.S: Хочу поблагодарить vechernamore и ее мужа ilyuxa и Сашу Пушкину за вычитку.
Читают сейчас
![]()
Похожие публикации
- 9 апреля 2013 в 22:56
ASP.NET MVC Урок 1. Начало
Настраиваемая авторизация в Asp.Net MVC
Простой путь создания сложных ASP.NET MVC контролов
Вакансии AdBlock похитил этот баннер, но баннеры не зубы — отрастут
Комментарии 64
Ну вот так вот вы, батенька, превратили Хабр в учебник по АСП.
Хотя за статьи спасибо, как раз надо было что-то подобное прочитать.
Я сейчас сохранил все статьи по теме в PDF. Вышло порядка 250 страниц. Вы действительно сами всё это написали? Это уже тянет не на простой памфлет, а на нормальный учебник по теме.
Автор думает, что он поступил конечно плохо. Но лучше один раз ночью, чем в течении двух недель каждый день. А в будущем его простят.
Уроки хороши, но не лучше бы было оформить это одним постом со ссылками на репозитарий, как пример? А уже там в readme/комментариях всё пояснять.
Просто действительно, хоть и материал годный, но вся лента в ASP теперь )
Спасибо за такой замечательный цикл! Ваш труд достоин уважения!
Эхх… а еще… Хабр — такой Хабр! Вот, например, на моей памяти товарищ vyacheslav_ka начинал цикл статей про ASP.NET MVC. Кажется, назывался «Пишем свой Хабрахабр..» и т.д. За первую статью по созданию пустого приложения получил 100500 рейта и пропал. Тут же человек выложил все и сразу, замечательно оформив. А вы кричите «ленту засрал»!
Неужели хороший айтишный материал засирает вашу ленту, а не триклятые новости о взломах контактиков, мэйл.ру и фэйлах почты России? Вам самим это не надоело?
З.Ы. Весь лимит сегодняшних плюсов ушел по адресу. Давно такого качественного материала тут не было.
Цель урока: Изучить Global.asax и поведение запуска веб-приложения, обработки веб-запроса. Изучение Nuget и Подключение протоколирования.
Начало
Создадим приложение ASP.NET MVC 4 Web Application «Lesson1» (рис 1.):


Не будем запускать приложение, а сразу установим (если до этого не сделали) NuGet расширение:

NuGet Package Manager – это расширение для Visual Studio, которое позволяет добавлять в существующие проекты модули, которые значительно упрощают работу. При создании «Basic» asp.net mvc4 приложения в само приложение было добавлено изначально много модулей. Их список мы можем найти, кликнув в Manage NuGet Packages… в контекстном меню проекта:


О них по порядку:
- Entity Framework – обеспечивает работу с БД
- jQuery (+ jQuery UI, jQuery Validation) – популярный javascript framework (о нем еще пойдет речь позже).
- Json.NET – классы для работы с json-форматом данных.
- knockoutjs – javascript библиотека для работы с Model View ViewModel архитектурой. (http://knockoutjs.com/)
- Microsoft.Net Framework 4 Http Client Libraries – программный интерфейс для работы с HttpContext-ом.
- Microsoft ASP.NET MVC 4 – собственно, классы паттерна проектирования MVC (то, что есть предметом изучения)
- Microsoft ASP.NET Razor 2 – view-движок. Есть еще ASPX и Spark – мы о них также будем говорить позже
- Microsoft ASP.NET Universal Providers Core Libraries (Microsoft ASP.NET Universal Providers for LocalDB) – предоставляет инструменты для поддержки всех SQL Server 2005 (и более поздних) и для SQL Azure.
- Microsoft ASP.NET Web API (Microsoft ASP.NET Web API Client Libraries, Microsoft ASP.NET Web API Core Libraries, Microsoft ASP.NET Web API Web Host) – для создания REST приложений, работа с XML, JSON и так далее
- Microsoft ASP.NET Web Optimization Framework – оптимизирует передачу данных, например, минимизирует js-код
- Microsoft ASP.NET WebPages 2 – набор классов для работы во View
- Microsoft jQuery Unobtrusive Ajax (Microsoft jQuery Unobtrusive Validation) – jQuery библиотека для поддержки ajax/валидации
- Microsoft.Web.Infrastructure – позволяет динамически регистрировать HTTP-модули во время выполнения
- Modernizr – js-библиотека, которая позволяет использовать html5 и css3 в старых браузерах
- WebGrease – позволяет минифицировать html, css, js.
Теперь, когда мы примерно прикинули, из чего состоит наше приложение, давайте запустим его.
Для этого необходимо создать HomeController:


Для метода (действия) Index добавим View и выберем
Views/Shared/_Layout.cshtml в качестве layout (типа master page):


Собственно, можем запускать.
Всё что мы увидим – это:

Почему контроллер надо было назвать именно Home и как это работает, мы будем изучать более подробно в следующих уроках.
Global.asax
А сейчас обратим внимание на файл Global.asax:
Класс MvcApplication наследует HttpApplication и содержит инструкции для инициализации приложения. Есть еще несколько событий, на которые можно добавить код. Рассмотрим их:
- public void Init() – приложение инициализируется или при первом вызове. Оно вызывается для всех экземпляров объекта HttpApplication.
- public void Dispose() – вызывается непосредственно перед уничтожением объекта HttpApplication. Это идеальное место для очистки ранее используемых ресурсов.
- Application_Error – наступает, когда необработанное исключение случается в приложении.
- Application_Start – наступает, когда первый экземпляр HttpApplication создается. Это позволяет создавать объекты доступные для всех экземпляров класса HttpApplication.
- Application_End – наступает, когда все созданные ранее экземпляры класса HttpApplication уничтожены. Это событие наступает только однажды в течение всего времени жизни приложения.
- Application_BeginRequest – наступает, когда приложение получает запрос. Первый раз это событие наступает для запроса страницы, когда пользователь вводит URL.
- Application_EndRequest – Последнее событие, которое наступает для запроса к приложению.
- Application_PreRequestHandlerExecute – наступает прежде, чем ASP.NET запустит обработчик страницы или веб-службу.
- Application_PostRequestHandlerExecute – наступает, когда ASP.NET заканчивает обработку.
- Applcation_PreSendRequestHeaders – наступает перед тем, как ASP.NET посылает клиенту (браузеру) HTTP заголовки.
- Application_PreSendContent – наступает перед тем, как ASP.NET посылает клиенту (браузеру) HTTP содержимое.
- Application_AcquireRequestState – наступает, когда ASP.NET получает текущее состояние (состояние сессии), связанное с текущим запросом.
- Application_ReleaseRequestState – наступает, когда ASP.NET завершает исполнение всех событий. В результате все модули сохраняют свои текущие состояния.
- Application_ResolveRequestCache – наступает, когда ASP.NET выполняет запрос авторизации. Это позволяет модулям кеширования обработать запрос и обслужить из кэша, минуя обработчик выполнения.
- Application_UpdateRequestCache – наступает, когда ASP.NET завершает выполнение обработчика, чтобы модули кеширования могли сохранить результат для использования в последующих ответах.
- Application_AuthenticateRequest – наступает, когда модуль идентификации устанавливает личность текущего пользователя как действительную. В текущий момент, учетные данные пользователя уже проверены.
- Application_AuthorizeRequest – наступает, когда модуль авторизации подтверждает, что пользователь может иметь доступ к ресурсам.
- Session_Start – наступает, когда новый пользователь заходит на сайт.
- Session_End – наступает, когда истекает время сессии пользователя, или он покидает сайт.
Хорошо. Теперь, чтобы воочию убедимся, что всё именно так и происходит, добавим протоколирование и сделаем это через добавление NLog модуля в NuGet.
Package Manager Console
В NuGet есть консоль для выполнения команд по установкеудалениюпоиску модулей, и других вещей, типа скаффолдинга.
Для вывода всех установленных модулей пишем:
Для получения всех доступных к установке модулей:
Для получения всех доступных модулей с названием NLog
Для установки модуля NLog необходимо вначале выбрать проект (если их в солюшене больше одного) и ввести команду:

Файлы копируются в проект, добавляются ссылки на сборки и web.config может быть обновлен.
Для удаления из проекта модуля необходимо, чтобы он не был связан с другими модулями. Удаляем так:
После установки пользуемся документацией на NLog (https://github.com/nlog/nlog/wiki/Tutorial) и добавляем в Web.config:
Мы ее потом исправим. Добавим в код (Global.asax.cs):
Запустим и завершим приложение (Stop). Откроем файл C://file.txt. Мы увидим, какие события происходили.
В Application_Start выполняется регистрация:
- Area (области),
- Filter (фильтры),
- Bundle (комплекты),
- Route (маршруты).
Подробности по инициализации Filter, Вundle и Route находятся в папке App_Start.
WebActivator
WebActivator – это модуль, который позволяет запустить код до самого первого старта App_Start. Это может быть необходимо для того, чтобы, к примеру, создать тестовую БД перед запуском.
Установим:
Добавим класс в App_Start папку:
В файле логов увидим, что строка Application PreStart исполняется раньше Application Start:
Создадим четыре файла отдельно для trace (трассировки), debug (отладки), info (информации), error (ошибки). Определим место записи: /Contents/logs/[текущая дата] Перепишем конфигурацию:
Log2Console
Для NLog есть еще классная программа Log2Console, которая позволяет получать логи прямо в окне программы.

Запускаем программу и настраиваем приемщик:





