C#.MVC. Первое приложение

Источник

Данная статья – практика по одной из статей ресурса metanit с некоторыми вариациями.

  • Создаем первое приложение
  • Подключаем EntityFramework
  • Добавляем модели
  • Добавляем контроллеры
  • Добавляем представления
  • Создаем базу данных через EntityFramework
  • Делаем первоначальное заполнение данными
  • Реализуем методы Buy/Remove

В 17 студии создадим новое ASP.NET WebApplication

Студия создаст структуру файлов, посмотрим, что у нас здесь

Обратим внимание на папки

  • Models
  • Views
  • Controllers

Они представляют собой основу паттерна MVC (ModelViewController)

Запустим наше приложение

У нас есть такие пункты меню Home, About, Contact. Зайдем в папку Controllers и откроем файл HomeController.cs

Видно, что у нас здесь одноименные методы.  В дальнейшем разберемся как они работают.

Добавление моделей через EntityFramework

Сначала добавим сам EntityFramework

Tools – >NugetPackage Manager

Добавление моделей

В папку Models добавим пару файлов с моделями, итак, жмем Ctrl+Shift+A и добавляем сначала один файл, потом другой.

Класс Car

Класс Purchase

Определение ключевого поля модели

Если в дальнейшем связывать модель с БД, то нужно указать ключевое поле. Это можно сделать 3 способами

  • Написать ключевое поле первым и написать его как Id
  • Поставить атрибут [Key], добавив using System.ComponentModel.DataAnnotations;
  • Написать PurchaseId

Контекст модели

Для получения данных из бд, нам нужно создать контекст модели. Сделать это можно унаследовав от класса DbContext

База данных

Будем использовать MSSQL и подход CodeFirst.

Добавим connectionString

webConfig

Для того, чтобы база появилась и произошла начальная инициализация данными, создадим класс CarDbInitializer, унаследованный от DropCreateDatabaseAlways и добавим в контекст некоторые данные. При этом база будет каждый раз уничтожаться и создаваться заново. Сделать это можно следующим образом.

Можно использовать DropCreateDatabaseIfModelChanges<CarContext> вместо DropCreateDatabaseAlways<CarContext>. При этом, исходя из названия, база будет уничтожаться и заполняться только, если изменится модель – в данном случае Car. Также можно использовать CreateDatabaseIfNotExists<CarContext>

Мы здесь добавляем 3 строчки в базу данных.

Также нужно добавить в Global.asax строчку Database.SetInitializer(new CarDbInitializer()), чтобы каждый раз, при запуске приложения у нас происходила инициализация.

Контроллер главной страницы

Controllers – > HomeController.cs

Изменим контроллер HomeController следующим образом

Создаем контекст и в методе Index() получаем перечисление из контекста, далее складываем его во ViewBag и возвращаем представление View()

Представление главной страницы

В папке view найдем файл cshtml и заменим в нем содержание на следующее

Запуск проекта

Главная страничка у нас есть. Теперь займемся ссылкой купить.

Метод Buy в контроллере

Создание представления на основе контроллера

Нажмем правой кнопкой на слове Buy и выберем AddView

Снимем галочку Use a layout page и заменим код на следующий

Поскольку это представление для метода Buy, и данные отправляются методом Post, то будет задействован метод

На входе он получает экземпляр класса purchase

Date задается вот этой строчкой

Person, Adress, CarId распознаются из представления при отправке. При этом input поля Person и Adress должны быть названы также как и поля в модели Purchase.

Тестирование

Дополнительно реализуем метод Remove

Добавим в контроллере

Создадим для контроллера представление (правой кнопкой мыши на слове Remove)

И добавим ссылку в Index.cshtml

То есть так…

Теперь, если загрузить главную страницу, мы получим…

 

Теперь, если нажать на “Удалить”, скажем на 3-й позиции, то у нас произойдет удаление и переход на представление контроллера

Теперь посмотрим, что происходит в базе данных? Откроем Server Management Studio

Как видно, база создалась, в таблице Cars 2 записи, потому что одну мы удалили методом Remove.

 

This entry was posted in C#. Bookmark the permalink.