Wpis z mikrobloga

Mam pytanie z zakresu Asp Net Wep Api. Planuję zrobić taki case: do akcji kontrolera przychodzi model, ten model chciałbym uzupełnić po stronie backendowej. Jak to najlepiej zrobić jakiś mechanizmem? Myślałem o ModelBinder, ale model przychodzi z Body a własna implementacja ModelBindera ignoruje taki typ. Nie mogę zmienić miejsca pozyskiwanie modelu z body na np route więc to komplikuje sytuację. Macie może jakieś wskazówki bądź rozwiązanie tego problemu?
#dotnet #csharp
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@WielkiElektronig: Tak obecnie mam, ale w sumie będę miał 4 takie akcje gdzie będzie napełniany model po stronie backendowej (tymi samymi danymi) i chciałem to zrobić bardziej wszechstronnie, zamiast uzuepłanić to w każdej z 4 akcji kontrolera :)
  • Odpowiedz
@grzech_u: nie wiem czy dobrze zrozumiałem Twój problem, ale jak masz atrybut [ApiController] na klasie to argument, który zostanie przekazany w metodzie obsługującej POST będzie automagicznie zmapowany przez asp.net core. Przykład:

[Route("api/simple")]
[ApiController]
public class SimpleController :
  • Odpowiedz
@grzech_u: no to robisz sobie jakiś ModeloUzupelniaczService, wstrzykujesz go i uzupelniasz.
Możesz też w samym modelu niejawnie zaszyć uzupełnianie w konstruktorze i wtedy wszystko się zrobi pod maską, albo wrzucić mu metodę statyczną UzupelnijMnie() i wtedy po otrzymaniu requesta i walidacjach wywołujesz request.UzupelnijMnie(). Ogranicza Cię tylko wyobraźnia. :)
  • Odpowiedz
Ale jakie to mają być dane? Może trzeba zrobić do tego jakiś serwis który je tam doda albo wpiąć customowy middleware który doda to co ma być dodane
  • Odpowiedz