Программист ASP.NET MVC C#
Кнопка для разрабоки, просьба не нажимать |
Asp.net для начинающих: Базовые понятия в ASP.NET MVC. Создание проекта
Теперь перейдем к созданию проекта. Создавать мы будет базовое приложение.
Запустите Visual Studio, в меню выберите «File»->»New»->»Project. «
В открытом окне выбираем из списка Installed Templates «Web» (1). Дальше выбираем «ASP.NET MVC 3 Web Application» (2). Пишем название проекта и путь к каталогу, где оно будет находиться (3)
Жмем ОК. В следующем окне оставляем выбранным «Internet Application» и жмем ОК
У нас создаться базовый проект asp.net mvc. После нажатия клавиши F5 (Start Debugging), мы увидим наш сайт (запуститься виртуальный IIS и на панели Пуск появится значок, которые отображает его работу). Каждый сайт запущенный с помощью Visaul Studio работает на каком-то порту (например, localhost:29663) по этому не волнуйтесь, если цифры у Вас будут отличатся от моих.
Что же нам насоздавала студия, и как работает asp.net mvc приложение.
Для начала нужно понять простую логику работы всех сайтов и то чем они отличаются от дескоп/windows приложений.
Когда мы открываем какой-то сайт (например www.aspnet.com.ua/Category/category-3.aspx), то отправляется запрос на сервер (это равносильно событию нажатия какой-то кнопки в дескоп приложений), и говорим серверу отдать нам какую-то информацию (в нашем примере отдать инфу о «категории 3» сайта aspnet.com.ua).
Сервер, в свою очередь, либо знает эту команду (этот url) и отдает нам нужную инфу, либо возвращает ошибку (например страничку 404). После того, как сервер команду выполнил, он про нас запрос забывает.
Когда мы на сайте жмем какую-то кнопку, то в целом это равносильно открытию новой странички сайта новым пользователем. Сервер совершено не помнит, что он нам перед этим отдавал и кто мы. Т.е. сервер работает по принципу: отдал-забыл.
При дальнейшем развитии интернета начали придумывать всякие хитрости, что бы сервер как-то запоминал с кем он работает и что бы нам было легче напоминать серверу, какую инфу мы до этого получали (это я говорю про Cookie, Session и прочие вещи).
На заметку. Технология asp.net forms стремилась к такому принципу: легко напоминать серверу, какие действия применялись до этого клиентом и какую информацию клиент уже получил. Так появилось понятия ViewState — это сохраненная информация состоянии странички. Но эта технология была не удачной
Перейдем теперь к тому, как работает asp.net mvc технология. (Сейчас я опишу совсем базовые вещи, многие шаги упущены для простоты).
Для начала откройте окно «Solutin Explorer» в VS (если его нет, то его можно найти в меню «View»-> «Solutin Explorer»). В нем мы увидим все файлы проекта. (это окно удобно разместить справа, так как мы постоянно будем ним пользоваться).
Нас сейчас интересует папка Controllers — в ней мы создаем файлики, которые будут обрабатывать наши действия (обрабатывать наши url). Так же нас интересует файл Global.asax, в нем мы будет задавать какой файл из папки Controllers какой url будет обрабатывать. Откроем файл Global.asax и найдем вот такой код:
public static void RegisterRoutes(RouteCollection routes)
<
routes.IgnoreRoute(«
Это правило привязки url к Controllers. Удалим строку с «routes.MapRoute. » по «. UrlParameter.Optional > );» Вместо нее мы напишем свои три правила:
routes.MapRoute(
«Root», // название правила
«», // какой URL
new < controller = "Home", action = "Index" >//какой файл controller
);
routes.MapRoute(
«Home-About», // название правила
«About.aspx», // какой URL
new < controller = "Home", action = "About" >//какой файл controller
);
routes.MapRoute(
«Account-LogOn», // название правила
«Account/LogOn.aspx», // какой URL
new < controller = "Account", action = "LogOn" >//какой файл controller
);
Каждое правило имеет свое название, которое не должно повторятся («Root» «Home-About» «Account-LogOn»). Так же каждое правило должно указывать URL и controller, который будет это действие обрабатывать.
Сейчас в моем сайте есть три странички/три правила:
— Account/LogOn.aspx — ее будет обрабатывать контроллер AccountController и метод этого контроллера LogOn
— About.aspx — эту страничку будет обрабатывать контроллер HomeController и метод этого контроллера About
— корневая стр — ее будет обрабатывать контроллер HomeController и метод этого контроллера Index
Теперь откроем файл HomeController (для открытия файлов пользуйтесь «Solutin Explorer») в этом файле вы увидите класс HomeController, которые наследуется от класса Controller и два метода этого класса Index и About. Эти методы и будут обрабатывать наши url.
Основная логика работы приложения пишется в этих методах (например считывания или внесение информации в базу данных). Давайте мы в методе Index считаем серверное время, а вот в методе About посчитаем сколько будет 345 умножить на 23.
public class HomeController : Controller
<
public ActionResult Index()
<
var date = DateTime.Now;
public ActionResult About()
<
var result = 345 * 23;
return View();
>
>
Теперь нам нужно результат свои действий отобразить пользователю. В web приложениях это делается с помощью html страничек. Эти странички, как правило, находятся в папке View (пользуйтесь «Solutin Explorer»). В папке View для каждого контролера создается своя папка с названием этого контроллера (так легче ориентироваться). Создадим несколько страничек.
Правой клавишей нажимаем на папке «Home» в контекстном меню выбираем «Add»->»View. «
Перед нами откроется окно, в котором мы укажем имя нашей страничке «ViewDateTime». Так же нужно убрать галочку «Use layout or master page», о ней мы поговорим позже. Итак, окно должно иметь вид:
Жмем Add. Студия создаст нам файл ViewDateTime.cshtml и создаст в нем базовую структуру html. Таким же образом добавим еще файл ViewResult
Вернемся теперь к нашим методам контролера. Изменим строку «return View();» в методе Index на «return View(«
/Views/Home/ViewDateTime.cshtml», date);» а в методе About на «return View(«
Это означает, что результат своих действий мы будем отображать на представлениях (View) ViewDateTime и ViewResult соответственно, так же мы в эти представления передали date и result.
Что бы упростить жизнь программистам и не писать всегда длинный путь («
/Views/Home/. cshtml) к файлам отображения принято использовать такие правила:
-
return View(); // означает, что файл отображения находиться в папке с именем контролера, а файл имеет тоже название что и метод. Пример, для метода Index контролера HomeController представление будет находиться «
/Views/Home/Index.cshtml»
return View(«MyView»); // означает, что файл отображения находиться в папке с именем контролера, а файл имеет название MyView. Пример, для метода Index контролера HomeController представление будет находиться
Исходя из выше сказанного еще раз изменим строки кода: метод Index будет возвращать return View(«ViewDateTime», date); а метод About вернет return View(«ViewResult», result);
Теперь обратите внимания, что кроме указания View-файла мы еще передаем данные для отображения (date и result). Сейчас нам нужно настроить их корректное отображение.
Откроем файл ViewDateTime.cshtml и вначале добавим код «@model DateTime». Он означает, что файл ViewDateTime будет отображать переменную типа DateTime. Если бы мы не задавали, какой тип переменой будет отображать данное представление, то код был бы рабочим, но тогда на этой страничке у нас не было подсказки. Между тегами добавим код @Model.ToShortDateString().
Используя код @Model — мы обращаемся к объекту, который передали в View. Полный код файла ViewDateTime.cshtml
@model DateTime
@ <
Layout = null;
>
Ваше первое ASP.NET 5 веб приложение, созданное при помощи Visual Studio¶
В этом руководстве вы увидите, как создать простое веб приложение при помощи ASP.NET 5. В этом приложении данные будут связаны с базой данных SQL при помощи Entity Framework (EF), а ASP.NET MVC будет поддерживать операции CRUD.
Начальные реквизиты¶
Прежде чем начать, убедитесь, что вы сделали вот это: Установка ASP.NET 5 для Windows. Мы предполагаем, что у вас установлена Visual Studio 2015 и последняя версия среды и инструментария ASP.NET 5.
Дополнительную информацию по установке ASP.NET 5 на других платформах вы можете получить тут: Начинаем.
Создание нового ASP.NET 5 проекта¶
Запустите Visual Studio 2015. Из меню File выберите New > Project.
Выберите шаблон ASP.NET Web Application. Он находится в Installed > Templates > Visual C# > Web. Назовите проект ContosoBooks и нажмите OK.
В диалоговом окне New ASP.NET Project выберите Web Application под ASP.NET 5 Preview Templates. Кроме того, убедитесь, что галочка не стоит на Host in the cloud, и нажмите OK.
Не меняйте метод аутентификации. Оставьте по умолчанию Individual User Accounts.
Запуск приложения по умолчанию¶
После того как Visual Studio закончит создание приложения, запустите его, нажав Debug -> Start Debugging. Как вариант, вы можете нажать F5.
Для инициализации Visual Studio и нового приложения может потребоваться время. После завершения браузер покажет запущенное приложение.
После запуска приложения закройте браузер и нажмите на иконку “Stop Debugging” в Visual Studio, чтобы остановить приложение.
Просмотр проекта¶
В Visual Studio окно Solution Explorer позволяет вам управлять файлами проекта. Шаблон веб приложения, который вы использовали для создания этого приложения, добавляет следующую базовую структуру папок:
Visual Studio создает некоторые начальные файлы и папки для проекта. Вот первичные файлы, с которыми вам стоит ознакомиться:
Имя файла | Цель |
---|---|
project.json | Присутствие файла project.json определяет проект .NET Execution Environment (DNX). В файле project.json содержится вся информация, которая нужна DNX, чтобы запустить и упаковать ваш проект. Дополнительную информацию, включая файловую схему project.json, вы можете найти тут: see Работа с DNX проектами. |
global.json | Visual Studio использует этот файл для конфигурации проекта. |
appsettings.json | Этот файл позволяет вам включать дополнительную информацию о проекте. Дополнительную информацию вы можете получить тут: Конфигурация. |
Startup.cs | Класс Startup является начальной точкой приложения. В классе Startup должен быть определен метод Configure , кроме того, здесь может быть определен метод ConfigureServices , и он может быть вызван при запуске приложения. Дополнительную информацию вы можете получить тут: Запуск приложения. |
Index.cshtml | Здесь view содержит HTML для основной страницы. |
_Layout.cshtml | Здесь view содержит общий HTML для разных страниц веб приложения. |
HomeController.cs | Этот controller содержит классы, которые обрабатывают входящие запросы браузера, получают модельные данные, а затем определяют шаблоны представлений, которые возвращают ответ браузеру. |
Понимание MVC¶
В этом проекте используется MVC. MVC обозначает Model-View-Controller (модель-представление-контроллер). MVC — это паттерн для разработки приложений, и эти приложения хорошо структурированы, их можно протестировать и легко поддерживать. MVC приложения содержат:
- Models: Классы, которые представляют данные этого приложения, а затем используют логику валидации для связывания бизнес-правил и данных.
- Views: Шаблонные файлы, которые использует приложение для динамичных HTML ответов.
- Controllers: Классы, которые обрабатывают входящие браузерные запросы, получают модельные данные, а затем определяют представления, которые возвращают ответ браузеру.
Понимание .NET Core¶
.NET Core 5 — это модальная реализация среды разработки и библиотек, которая включает в себя некоторые аспекты .NET Framework. .NET Core 5 разрабатывается для Windows, Linux и OS X. .NET Core 5 состоит из набора библиотек “CoreFX” и маленькой среды разработки “CoreCLR”. .NET Core имеет открытый исходный код, так что вы можете отслеживать развитие проекта на GitHub. Больше информации вы можете получить тут: Выбор правильного .NET сервера.
Entity Framework¶
Entity Framework (EF) — это ORM (object-relational mapping) фреймворк. Он позволяет работать с реляционными данными как с объектами, и при этом вам нужно писать намного меньше кода для доступа к данным, чем обычно. Используя EF, вы можете работать с запросами при помощи LINQ, затем получать и обрабатывать данные как строго типизированные объекты. LINQ предлагает паттерны для запроса и обновления данных. Использование EF позволяет сфокусироваться на остальной части проекта, а не на основах доступа к данным.
Откройте файл project.json. В разделе dependencies вы увидите следующие строки, связанные с EF:
Здесь показано, что вы можете использовать команды EF из командного окна, а также что пакет EF NuGet включен в ваш проект.
Создание модели данных и скаффолдинг¶
Entity Framework поддерживает парадигму разработки Code First. Code First позволяет определять модели данных при помощи классов. Класс — это конструкция, которая позволяет создавать собственные пользовательские типы, группируя переменные разных типов, методы и события. Классы могут работать с существующей базой данных или генерируют базу данных. В данном руководстве вы начнете с создания entity-классов, которые определяют модели данных для веб приложения. Затем вы создадите контекстные классы, которые управляют entity-классами и дают данным доступ к базе данных. Далее вы настроите EF и заполните базу данных.
Создание entity-классов¶
Классы, которые вы создаете для определения схемы данных, называются entity-классами. Если вы новичок в работе с базами данных, подумайте об entity-классах как о табличной структуре базы данных. Каждое свойство класса определяет колонку таблицы базы данных. Эти классы предлагают легкий, объектно-реляционный интерфейс, совмещающий объектно-ориентированный код и реляционную табличную структуру базы данных.
В веб приложении будет две сущности:
Вы определите класс для каждой из них в папке Models в Solution Explorer.
Модельный класс вы можете поместить в любое место вашего проекта. Папка Models — это просто соглашение.
Кликните правой кнопкой мышки по папке Models и выберите Add > New Item. В диалоговом окне Add New Item выберите шаблон Class. В поле Name напишите “Author.cs” и нажмите OK.
Замените код по умолчанию следующим кодом:
Повторите эти шаги для создания другого класса Book со следующим кодом:
Чтобы не уложнять приложение, пусть у каждой книги будет один автор. Свойство Author определяет способ управления отношениями между автором и книгой. В EF этот тип свойства называется navigation property. Когда EF создает схему базы данных, EF автоматически вставляет AuthorID , и это будет вторичным ключом для таблицы Authors.
Скаффолдинг¶
Скаффолдинг сохраняет ваше время и усилия, автоматически генерируя начальную точку для операций CRUD вашего приложения. Начав с простого модельного класса и не написав ни единой строки кода, вы создаете два контроллера, которые содержат CRUD-операции, связанные с авторами и книгами, а также необходимые представления.
Чтобы добавить скаффолдинг кликните правой клавишей мышки по папке Controllers в Solution Explorer. Выберите Add –> New Scaffolded Item.
Если вы не видите опцию New Scaffolded Item, убедитесь, что при создании проекта вы использовали Individual User Accounts.
Из диалогового окна Add Scaffold выберите MVC 6 Controller with views, using Entity Framework, а затем нажмите на кнопку Add.
Далее, в диалоговом окне Add Controller в списке с модельными классами выберите Book (ContosoBooks.Models). Также установите контекстный класс на ApplicationDbContext (ContosoBooks.Models). Флажок на Generate views должен быть установлен. Нажмите на кнопку Add.
Как вы видите, диалоговое окно Add Controller дает вам возможность выбирать опции для создания контроллеров и представлений.
Этот скаффолд создает код, который предоставляет контроллер и набор представлений. В представлениях есть UI и код для создания, чтения, обновления, удаления и перечисления данных из базы данных.
Повторите вышеперечисленные шаги по скаффолдингу, чтобы создать контроллер Author и связанные с ним представления. Используйте модельный класс Author (ContosoBooks.Models) и контекстный класс ApplicationDbContext (ContosoBooks.Models), как показано на следующем рисунке.
В Solution Explorer вы увидите, что новые контроллеры добавлены в папку Controller, а новые представления в папку Views.
Настройка приложения перед добавлением данных¶
Далее, к приложению нужно добавить пакет Microsoft.Extensions.DependencyInjection . В Solution Explorer найдите и откройте project.json. В разделе dependencies в конце раздела пропишите эту строку.
IntelliSense помогает вам, когда вы набираете. Когда вы сохраните project.json, Visual Studio автоматически даст ссылку на новый пакет.
После добавления этой строки раздел dependencies в файле project.json будет выглядеть вот так:
Добавление данных¶
Мы не будем вручную набирать данные — мы используем код, который заполнит базу данных. Добавьте класс SampleData в папке Models со следующим кодом:
Вы не будете вставлять этот класс данных в производственный код, но для нашего сценария он годится.
Далее, в Solution Explorer, откройте файл Startup.cs. Добавьте следующую строку кода в методе Configure:
После этого полный файл Startup.cs будет выглядеть вот так:
Обратите внимание, что в ConfigureServices приложение вызывает Configuration[«Data:DefaultConnection:ConnectionString»] , чтобы получить строку соединения с базой данных. Во время разработки эта настройка идет из файла appsettings.json. Когда вы разворачиваете приложение в производственной среде, вы устанавливаете строку соединения в переменную среды на хосте. Если Configuration API находит переменную среды с тем же ключом, то возвращает переменную среды, вместо того значения, что находится в appsettings.json.
Создание веб приложения¶
Чтобы убедиться, что все классы и изменения работают, вы должны создать приложение.
Из меню Build выберите Build Solution.
Отображается окно Output, и если все прошло успешно, вы увидите соответствующее сообщение.
Если же произошла ошибка, то просмотрите предыдущие шаги. Информация в окне Output покажет, в каком файле возникла проблема и где требуется изменение. Эта информация поможет вам определить, какие предыдущие шаги вам стоит повторить, чтобы устранить проблему.
Прежде чем запустить приложение, вы должны создать БД, используя миграцию данных.
Использование миграции данных для создания базы данных¶
Миграция данных в EF используется для обновления моделей во всем приложении. Изначально используя миграцию данных для создания базы данных, вы можете легко изменить базу, после того как была изменена модель. Это позволит вам более эффективно создавать и поддерживать приложение. Альтернативой миграции данных, когда требуются изменения в модели или схеме после изменения базы данных, является пересоздание всей базы данных.
Откройте Command Prompt в директории проекта (ContosoBooks/src/ContosoBooks).
Чтобы открыть Command Prompt, кликните правой кнопкой мышки по кнопке start в Windows и выберите из меню Command Prompt.
Чтобы найти директорию проекта, кликните правой кнопкой мышки в Visual Studio по имени проекта (ContosoBooks) в Solution Explorer и выберите Open Folder in File Explorer. Скопируйте путь к проекту из File Explorer в Command Prompt. Например, введите следующее из Command Prompt, чтобы сменить директорию:
Убедитесь, что вы перешли к папке ContosoBooks, что в папке src.
Из Command Prompt запустите следующие команды:
Если dnu restore не распознается, вам нужно полностью повторить шаг с начальными реквизитами (или частично). Но сперва вам надо проверить Active версию .NET Version Manager (dnvm). Чтобы сделать это, введите dnvm list в командной строке. Если рядом с какой-либо версией нет *, установите активную версию, то есть, введите dnvm use 1.0.0-rc1-update1 -p , так что нужная версия будет выбрана.
.NET Version Manager (dnvm) — это набор утилит командной строки, которые используются для обновления и конфигурации .NET Runtime.
DNX обозначает .NET Execution Environment. Команда ef указана в файле project.json проекта. Больше информации по dnvm , dnu , and dnx , вы можете получить тут: DNX Overview.
Команда “ add Initial ” создает миграцию “Initial”, которая добавляет в проект код, позволяя EF обновлять схему базы данных. Команда update создает актуальную базу данных. После запуска этой команды папка Migrations будет обновлена:
Если вы хотите получить помощь по EF командам, введите следующее в командной строке: dnx ef -? . Для помощи с командой add введите следующее: dnx ef migrations add -? . А для помощи с командой update — следующее: dnx ef database update -? .
Кроме того, вы сможете увидеть новую базу данных в SQL Server Object Explorer.
Добавление навигации¶
Обновите навигацию для веб приложения. Из Solution Explorer откройте файл Views/Shared/_Layout.cshtml. Найдите следующий код:
Замените выше представленный код вот этим:
Данные изменения добавят ссылку к представлению Books и ссылку к представлению Authors. Вы создали эти представления, когда добавили в проект скаффолдинг.
Создание веб приложения¶
Чтобы убедиться, что все работает, вам снова нужно собрать приложение.
Из меню Build выберите Build Solution.
Локальный запуск веб приложения¶
Запустите приложение, чтобы увидеть, как выглядит вся продукция или категория продуктов.
В Solution Explorer кликните правой клавишей мышки по названию проекта и выберите View -> View in Browser. Либо же просто нажмите F5.
Откроется браузер и покажет приложение. Нажмите на ссылку Books вверху страницы.
Закройте браузер и нажмите на иконку “Stop Debugging” в Visual Studio.
Публикация приложения на Azure¶
В Solution Explorer в Visual Studio кликните правой кнопкой мышки по проекту и выберите Publish.
В окне Publish Web нажмите на Microsoft Azure Web Apps и залогиньтесь на Azure.
После этого нажмите New, чтобы создать на Azure новое приложение.
Назовите сайт, выберите сервисный план, ресурсную группу и регион. Также выберите сервер базы данных, а также имя пользователя и пароль к нему. Если вы уже создавали сервер базы данных, используйте его. После этого нажмите Create.
В Connection в окне Publish Web нажмите Publish.
Прогресс публикации вы можете просмотреть в окне Output или в окне Azure App Service Activity в Visual Studio.
После публикации на Azure ваше приложение, запущенное на Azure, будет отображено в браузере.
Дополнительная информация доступна вот тут: Publishing and Deployment.
Asp с чего начать?
Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009
Репутация: нет
Всего: 1
Вообщем хочу посмотреть что да как тут.
Не хочу читать книжки, больше меня привлекают уроки, примеры и т.п.
Так вот посоветуйте места где можно по учиться.
ну и какой то материал для начала.
я уже имею опыт в javascript c\C++ C# xml wpf вообщем и других языках.
первый и самый важный вопрос asp.net это ООП язык:?
Экскалупатор |
|
|
DenWPF |
|
|
Экскалупатор |
|
|
DenWPF |
|
|
DenWPF |
|
|
tol05 |
|
|
Цитата(DenWPF @ 22.11.2009, 14:39 ) |
с самого начала мне кажется что это все wpf. и проблем с ним у меня не будет. |
Я наверное поддержу и скажу, что assembler — тот же C#.
Если память не подводит, то я уже в 2003 году на ASP.NET 1.1 писал. Когда была заявлена технология ASP — даже не представляю. надо гуглить.
Так что wpf 2007 года рождения никак не может быть копией, с которой «драли» ASP.NET.
ну а то, что проблем не будет — это чувствуется по апломбу постов. Удачи.
Это сообщение отредактировал(а) tol05 — 22.11.2009, 17:23
DenWPF |
|
|
Экскалупатор |
|
|
RWander |
|
|
DenWPF |
|
|