Advertisement
Guest User

MyCode

a guest
Apr 24th, 2021
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.97 KB | None | 0 0
  1. // Файл Editor.razor
  2.  
  3. @page "/admin/books/edit/{id:long}"
  4. @page "/admin/books/create"
  5. @inherits OwningComponentBase<IBookRepository>
  6.  
  7. <style>
  8.     div.validation-message {
  9.         color: rgb(220, 53, 69);
  10.         font-weight: 500
  11.     }
  12. </style>
  13.  
  14. <div class="table-block">
  15.     <div class="table-block__row">
  16.         <div class="table-block__element">
  17.  
  18.             <div class="table-block__content">
  19.                 <h3 class="title-admin2">@TitleText</h3>
  20.             </div>
  21.  
  22.             <div class="table-block__content">
  23.  
  24.                 <EditForm Model="Book" OnValidSubmit="SaveBook">
  25.                     <DataAnnotationsValidator />
  26.  
  27.                     @if (Book.BookID != 0)
  28.                     {
  29.                         <div class="form-group">
  30.                             <label>ID книги:</label>
  31.                             <input class="form-style" disabled value="@Book.BookID" />
  32.                         </div>
  33.                     }
  34.  
  35.                     <div class="form-group">
  36.                         <label>Категория:</label>
  37.                         <ValidationMessage For="@(() => Book.Category.Name)" />
  38.                         <InputText class="form-style" @bind-Value="Book.Category.Name" />
  39.                     </div>
  40.  
  41.                     <div class="form-group">
  42.                         <label>Автор:</label>
  43.                         <ValidationMessage For="@(() => Book.Author)" />
  44.                         <InputText class="form-style" @bind-Value="Book.Author" />
  45.                     </div>
  46.  
  47.                     <div class="form-group">
  48.                         <label>Название:</label>
  49.                         <ValidationMessage For="@(() => Book.Name)" />
  50.                         <InputText class="form-style" @bind-Value="Book.Name" />
  51.                     </div>
  52.  
  53.                     <div class="form-group">
  54.                         <label>Цена:</label>
  55.                         <ValidationMessage For="@(() => Book.Price)" />
  56.                         <InputNumber class="form-style" @bind-Value="Book.Price" />
  57.                     </div>
  58.  
  59.                     <div class="form-group">
  60.                         <label>Описание (аннотация):</label>
  61.                         <ValidationMessage For="@(() => Book.Description)" />
  62.                         <InputText contenteditable="true" class="form-style" @bind-Value="Book.Description" />
  63.                     </div>
  64.  
  65.  
  66.                     <button type="submit" class="button__edit2">Сохранить</button>
  67.  
  68.                     <NavLink class="button__details" href="/admin/books">Отмена</NavLink>
  69.                 </EditForm>
  70.             </div>
  71.  
  72.         </div>
  73.     </div>
  74. </div>
  75.  
  76.  
  77. @code {
  78.     public IBookRepository Repository => Service;
  79.  
  80.     [Inject]
  81.     public NavigationManager NavManager { get; set; }
  82.  
  83.     [Parameter]
  84.     public long Id { get; set; } = 0;
  85.  
  86.     public Book Book { get; set; } = new Book();
  87.  
  88.     protected override void OnParametersSet()
  89.     {
  90.         if (Id != 0)
  91.             Book = Repository.Books
  92.                 .Include(c => c.Category)
  93.                 .FirstOrDefault(b => b.BookID == Id);
  94.     }
  95.  
  96.     public void SaveBook()
  97.     {
  98.         if (Id == 0)
  99.             Repository.CreateBook(new Book());
  100.         else
  101.             Repository.SaveBook(Book);
  102.  
  103.         NavManager.NavigateTo("/admin/books");
  104.     }
  105.  
  106.     public string TitleText => Id == 0 ? "Создание новой книги" : "Редактирование данных о книге";
  107. }
  108.  
  109.  
  110. // Класс Book.cs
  111. public class Book
  112.     {
  113.         public int BookID { get; set; }
  114.  
  115.         [Required(ErrorMessage = "Пожалуйста, введите название книги!")]
  116.         public string Name { get; set; }
  117.  
  118.         [Required(ErrorMessage = "Пожалуйста, введите ФИО автора книги!")]
  119.         public string Author { get; set; }
  120.  
  121.         [Required(ErrorMessage = "Пожалуйста, введите описание (аннотацию) книги!")]
  122.         public string Description { get; set; }
  123.  
  124.         [Required(ErrorMessage = "Пожалуйста, укажите категорию (жанр) книги!")]
  125.         [Range(1, 10000, ErrorMessage = "Поле цены должно быть положительным числом от 1 до 10000")]
  126.         [Column(TypeName = "decimal(8, 2)")]
  127.         public decimal Price { get; set; }
  128.  
  129.         public virtual Category Category { get; set; }
  130.  
  131.         [Required(ErrorMessage = "Пожалуйста, добавьте обложку книги!")]
  132.         public byte[] Image { get; set; }
  133.     }
  134.  
  135.  
  136. Класс Category.cs
  137. public class Category
  138.     {
  139.         public int Id { get; set; }
  140.  
  141.         [Required(ErrorMessage = "Пожалуйста, укажите название категории (жанра) книги!")]
  142.         public string Name { get; set; }
  143.  
  144.         public virtual ICollection<Book> Books { get; set; }
  145.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement