public static EdizioneCorso ToEdizioneCorso(this EdizioneCorsoDTO edizioneCorsoDTO) { if (edizioneCorsoDTO == null) { return(null); } return(new EdizioneCorso { IdEdizioneCorso = edizioneCorsoDTO.IdEdizioneCorso, IdCorso = edizioneCorsoDTO.IdCorso, DataInizio = edizioneCorsoDTO.DataInizio }); }
public IActionResult Post([FromBody] EdizioneCorsoDTO edizioneCorsoDTO) { if (edizioneCorsoDTO == null) { return(BadRequest()); } EdizioneCorso edizioneCorso = edizioneCorsoDTO.ToEdizioneCorso(); //work.Begin(); //work.EdizioniCorsiRepo.Add(edizioneCorso); //work.Save(); //work.End(); try { work.AddEdizioneCorso(edizioneCorso); } catch (BusinessLogicException e) { return(BadRequest(e)); } //N.B.: il tipo anonimo che viene passato a CreatedAtRoute(,,) come secondo parametro "routeValues:" // deve avere un campo che si chiama COME IL PARAMETRO della Route passatagli come primo argomento. // (In questo caso come routeName: gli passiamo "GetEdizioneCorso", e quindi il campo del tipo anonimo // che gli passiamo come routeValues: deve chiamarsi idEdizioneCorso) // // In caso contrario, SEBBENE METTENDO UN BREAKPOINT SU return risposta; il valore di "risposta" sembri essere corretto, // Postman riceve uno status 500 (Internal Server Error) e la pagina di errore html inizia con le seguenti tre righe: // « An unhandled exception occurred while processing the request. // InvalidOperationException: No route matches the supplied values. // Microsoft.AspNetCore.Mvc.CreatedAtRouteResult.OnFormatting(ActionContext context) » var risposta = CreatedAtRoute(routeName: "GetEdizioneCorso", routeValues: new { idEdizioneCorso = edizioneCorso.IdEdizioneCorso }, value: edizioneCorso.ToDTO()); return(risposta); }