Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Файл Editor.razor
- @page "/admin/books/edit/{id:long}"
- @page "/admin/books/create"
- @inherits OwningComponentBase<IBookRepository>
- <style>
- div.validation-message {
- color: rgb(220, 53, 69);
- font-weight: 500
- }
- </style>
- <div class="table-block">
- <div class="table-block__row">
- <div class="table-block__element">
- <div class="table-block__content">
- <h3 class="title-admin2">@TitleText</h3>
- </div>
- <div class="table-block__content">
- <EditForm Model="Book" OnValidSubmit="SaveBook">
- <DataAnnotationsValidator />
- @if (Book.BookID != 0)
- {
- <div class="form-group">
- <label>ID книги:</label>
- <input class="form-style" disabled value="@Book.BookID" />
- </div>
- }
- <div class="form-group">
- <label>Категория:</label>
- <ValidationMessage For="@(() => Book.Category.Name)" />
- <InputText class="form-style" @bind-Value="Book.Category.Name" />
- </div>
- <div class="form-group">
- <label>Автор:</label>
- <ValidationMessage For="@(() => Book.Author)" />
- <InputText class="form-style" @bind-Value="Book.Author" />
- </div>
- <div class="form-group">
- <label>Название:</label>
- <ValidationMessage For="@(() => Book.Name)" />
- <InputText class="form-style" @bind-Value="Book.Name" />
- </div>
- <div class="form-group">
- <label>Цена:</label>
- <ValidationMessage For="@(() => Book.Price)" />
- <InputNumber class="form-style" @bind-Value="Book.Price" />
- </div>
- <div class="form-group">
- <label>Описание (аннотация):</label>
- <ValidationMessage For="@(() => Book.Description)" />
- <InputText contenteditable="true" class="form-style" @bind-Value="Book.Description" />
- </div>
- <button type="submit" class="button__edit2">Сохранить</button>
- <NavLink class="button__details" href="/admin/books">Отмена</NavLink>
- </EditForm>
- </div>
- </div>
- </div>
- </div>
- @code {
- public IBookRepository Repository => Service;
- [Inject]
- public NavigationManager NavManager { get; set; }
- [Parameter]
- public long Id { get; set; } = 0;
- public Book Book { get; set; } = new Book();
- protected override void OnParametersSet()
- {
- if (Id != 0)
- Book = Repository.Books
- .Include(c => c.Category)
- .FirstOrDefault(b => b.BookID == Id);
- }
- public void SaveBook()
- {
- if (Id == 0)
- Repository.CreateBook(new Book());
- else
- Repository.SaveBook(Book);
- NavManager.NavigateTo("/admin/books");
- }
- public string TitleText => Id == 0 ? "Создание новой книги" : "Редактирование данных о книге";
- }
- // Класс Book.cs
- public class Book
- {
- public int BookID { get; set; }
- [Required(ErrorMessage = "Пожалуйста, введите название книги!")]
- public string Name { get; set; }
- [Required(ErrorMessage = "Пожалуйста, введите ФИО автора книги!")]
- public string Author { get; set; }
- [Required(ErrorMessage = "Пожалуйста, введите описание (аннотацию) книги!")]
- public string Description { get; set; }
- [Required(ErrorMessage = "Пожалуйста, укажите категорию (жанр) книги!")]
- [Range(1, 10000, ErrorMessage = "Поле цены должно быть положительным числом от 1 до 10000")]
- [Column(TypeName = "decimal(8, 2)")]
- public decimal Price { get; set; }
- public virtual Category Category { get; set; }
- [Required(ErrorMessage = "Пожалуйста, добавьте обложку книги!")]
- public byte[] Image { get; set; }
- }
- Класс Category.cs
- public class Category
- {
- public int Id { get; set; }
- [Required(ErrorMessage = "Пожалуйста, укажите название категории (жанра) книги!")]
- public string Name { get; set; }
- public virtual ICollection<Book> Books { get; set; }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement