Добавление модели в Razor Pages
В этой статье за основу я возьму пример, который описывает сама Майкрософт.
Довайте добавим модель в Razor Pages. В этом примере мы будем работать со списком фильмов. База данных на основе ORM (в нашем случае Entity Framework core)
Используя Visual Studio 2019
Нажимите правой кнопкой по солюшену > Add > New Folder. Имя папки Models.
Далее тоже самое, но с папкой. Нажмите правой кнопкой по папке Models. Выберите Add > Class. Имя класса задайте как Movie.
Дабавьте свойства в класс Movie:
using System; using System.ComponentModel.DataAnnotations; namespace RazorPagesMovie.Models { public class Movie { public int ID { get; set; } public string Title { get; set; } [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } public string Genre { get; set; } public decimal Price { get; set; } } }
Свойство ID обязательное. Оно требуется для нашей ORM. То есть когда ORM будет создавать таблицы на основе наших классов. Она будет проверять наличие ID или MovieId (в качестве альтернативы). Если ORM найдет одно из этих свойств, то создаст таблицу с первичным ключом ID или MovieId.
Атрибут [DataType(DataType.Date)]
необязательный. В нашем примере он просто добавит html поле с типом дата. Т.е. создаст поле <input type=»date» />
Скафолдинг стринцы (page scaffold)
Нам надо добавить файл представления и файл класса. Но, чтобы не делать этого вручную VisualStudio умеет добавлять нужную инфраструктуру автоматически. Данный процесс можно назвать скофолдингом.
Чтобы воспользоваться скафолдингов в VS. Добавьте папку Pages и Movies внутри. Далее нажмем правой кнопкой Add -> New Scaffolded item как на картинке.
Как добавить CRUD действия на основе нашей модели.
После комадны New Scaffolded item добавим CRUD действия на основе нашей модели. (CRUD — Это основные действия create, read, update, delete)
Вы модальном окте «Add razor pages using entity framework (CRUD)». Выберите следуюшие позиции из списков.
- Model class — укажите свой класс модели (Movie).
- Date context class — нажмите на плюсик и укажите контекст RazorPagesMovies.Models.RazorPagesMovieContext (VS автоматически добавит нужный класс контекста с записимостями)
VisualStudio автоматически сгенерирует нам файлы.
- Pages/Movies: Create, Delete, Details, Edit, and Index.
- Data/RazorPagesMovieContext.cs