Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

Add.razor 2.3 KiB

2 semanas atrás
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. @page "/plants/add"
  2. @using Models.BaseData
  3. @inject IPlantsUtils PlantsUtils
  4. @using Microsoft.AspNetCore.Components.Forms
  5. <div class="form">
  6. <h3>Save Plant</h3>
  7. <EditForm Model="@PlantModel" OnValidSubmit="AddPlant" >
  8. <DataAnnotationsValidator />
  9. <div class="row">
  10. <div class="col">
  11. <input type="text" class="form-control" placeholder="Plant Name" @bind="PlantModel.Name" />
  12. <ValidationMessage For="@(() => PlantModel.Name)" />
  13. </div>
  14. </div>
  15. <div class="row">
  16. <div class="col">
  17. <textarea rows="10" class="form-control" placeholder="Plant Data" @bind="PlantModel.KnowledgeBase" />
  18. <ValidationMessage For="@(() => PlantModel.KnowledgeBase)" />
  19. </div>
  20. </div>
  21. <div class="row">
  22. <div class="col">
  23. image:<br/>
  24. <InputFile id="image" name="image" class="form-control" OnChange="OnInputFileChange" />
  25. <ValidationMessage For="@(() => PlantModel.Base64Icon)" />
  26. </div>
  27. </div>
  28. <div class="row">
  29. <div class="col">
  30. <button class="btn btn-primary" type="submit">Add Plant</button>
  31. </div>
  32. </div>
  33. </EditForm>
  34. </div>
  35. <style>
  36. .form {
  37. display: flex;
  38. flex-direction: column;
  39. align-items: center;
  40. align-content: center;
  41. }
  42. .form-control {
  43. margin: 5px 5px;
  44. }
  45. </style>
  46. @code {
  47. protected SavePlantViewModel PlantModel { get; set; } = new();
  48. protected async Task AddPlant()
  49. {
  50. var response = await PlantsUtils.Add(PlantModel);
  51. if (response.IsSuccessStatusCode)
  52. {
  53. NavigationManager.NavigateTo("/plants/list");
  54. }
  55. }
  56. private async Task OnInputFileChange(InputFileChangeEventArgs e)
  57. {
  58. var buf = new byte[e.File.Size];
  59. try
  60. {
  61. await e.File.OpenReadStream(maxAllowedSize: 1000000).ReadAsync(buf);
  62. PlantModel.Base64Icon = Convert.ToBase64String(buf);
  63. StateHasChanged();
  64. }
  65. catch
  66. {
  67. await SwalUtils.ShowSwal("","Image size should be less than 1 MB.", icon: SweetAlertIcon.Error);
  68. }
  69. }
  70. }