• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

ASP.NET MVC Bind nie działa w IActionResult Create

Object Storage Arubacloud
0 głosów
217 wizyt
pytanie zadane 11 stycznia 2023 w C# przez chrystian Gaduła (4,780 p.)

Mam problem formularz nie przechodzi walidacji wydaje mi się że jest to przez relacje 
 

//Relations
        public List<BooksReviews> BooksReviews { get; set; }
    

lecz nie wiem dlaczego ona jest sprawdzana jak nie jest użyta w Bind. To jest summary z ModelValidation podczas próby przesłania formularza

Nadole dane wysyłane przez formularz 

<form asp-action="Create">
                    <div asp-validation-summary="ModelOnly" class="text-danger"></div>

                    <div class="form-group text-center">
                        <img id="ProfilePicturePreview"  class="border-info rounded-circle" style="max-width: 150px" />
                    </div>
                    <div class="form-group">
                        <label asp-for="ProfilePicture" class="control-label"></label>
                        <input asp-for="ProfilePicture" class="form-control" />
                        <span asp-validation-for="ProfilePicture" class="text-danger"></span>
                    </div>
                    <div class="form-group">
                        <label asp-for="FullName" class="control-label"></label>
                        <input asp-for="FullName" class="form-control" />
                        <span asp-validation-for="FullName" class="text-danger"></span>
                    </div>
                    <div class="form-group">
                        <label asp-for="Note" class="control-label"></label>
                        <input asp-for="Note" class="form-control" />
                        <span asp-validation-for="Note" class="text-danger"></span>
                    </div>

                    <div class="form-group">
                        <input type="submit" value="Create" class="btn btn-outline-success float-right" />
                        <a class="btn btn-outline-secondary" asp-action="Index">Show All</a>
                    </div>
                </form>

Contllorer Create który bez walidacji działa poprawnie 
 

  [HttpPost]
        public async Task<IActionResult> Create([Bind("ProfilePicture,FullName,Note")] Reviewer reviewer)
        {
            if (ModelState.IsValid)
            {
                await _service.AddAsync(reviewer);
                return RedirectToAction(nameof(Index));

            }
            else { 
                return View(reviewer);
            
            }
         
        }

Sam Model 

   public class Reviewer
    {
        [Key]
        public int Id { get; set; }

        [Display(Name = "Profile Picture")]
        [Required(ErrorMessage = "Profile Picture is required")]
        
        public string ProfilePicture { get; set; }
        [Required(ErrorMessage = "Full Name is required")]
        [MaxLength(50)]
        [MinLength(5)]
        public string FullName { get; set; }

        [Display(Name = "Note")]
        [Required(ErrorMessage = "Note is required")]
        public string Note { get; set; }

        //Relations
        public List<BooksReviews> BooksReviews { get; set; }
    }

 [Bind(Include == example)] nie działa

Moje pytanie to jak nakierować formularz by wysyłał tylko te dany które wymagam/chce

1 odpowiedź

0 głosów
odpowiedź 11 stycznia 2023 przez Wiciorny Ekspert (270,110 p.)
wybrane 13 stycznia 2023 przez chrystian
komentarz 11 stycznia 2023 przez chrystian Gaduła (4,780 p.)
Niestety w tym przypadku też nie zadziałało ciągle obsługiwany jest wyjątek IsValid
komentarz 11 stycznia 2023 przez Wiciorny Ekspert (270,110 p.)
edycja 11 stycznia 2023 przez Wiciorny
nie wiem jak u Ciebie z umiejętnościami korzystania z debuggera.
Ale co pokazuje ModelState.Errors ?

Stosowanie Model.isValid sprawdzać Ci będzei cały model, a każdy element modelu nie może być nawet nullem, więc podejrzewam, że któryś nie uzupełniony jest nulem.
Możesz dodać "?" do modelu, żeby tego uniknąc
public List<BooksReviews>? BooksReviews
1
komentarz 13 stycznia 2023 przez chrystian Gaduła (4,780 p.)

Rozwiązanie problemu stackoverflow
dodanie do 
 

   public int? Id { get; set; }
 public List<BooksReviews>? BooksReviews { get; set; }

 

komentarz 13 stycznia 2023 przez Wiciorny Ekspert (270,110 p.)
dokładnie jak Ci na końcu napisałem, obiekt twierdzi, że referencja jest null i dlatego nie podlega walidacji

Podobne pytania

0 głosów
1 odpowiedź 215 wizyt
pytanie zadane 13 stycznia 2023 w C# przez chrystian Gaduła (4,780 p.)
0 głosów
0 odpowiedzi 209 wizyt
0 głosów
1 odpowiedź 249 wizyt
pytanie zadane 2 marca 2020 w C# przez Moras Obywatel (1,620 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...