11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao, fai vedere il codice della tua action, del dto e il json che invii.

Enjoy learning and just keep making
944 messaggi dal 11 febbraio 2013
[Route("api/contatti/{search?}")]
        public IHttpActionResult GetContatti(string search = null,
            int from = 0,int to = 3)
        {
            //_context.Database.Log = query => 
            //System.IO.File.AppendAllText(System.Web.HttpContext.Current.Server.MapPath("/App_Data/querylog.txt"), query);
            var elements = to - from;
            if (elements <= 0 || from < 0)
                return BadRequest("Richiesta non coerente");

            var contatti =  _context.CONTATTI.AsQueryable();

            if (search != null)
                contatti = contatti.Where(c => c.Nome.Contains(search) ||
                                               ...);

           contatti = contatti.OrderBy(c => c.Nome)
                     .Skip(from).Take(elements); 

            return Ok(contatti.AsEnumerable().Select(Mapper.Map<CONTATTI, ContattiDto>));
        }




const getContatti = async function (search) {
       
        try {
            const response = await fetch(`/api/contatti/${search}`);
            const contatti = await response.json();
            console.log(contatti);
            return contatti;
            
        } catch (e) {
            console.log(e);
        }     
    };


dto

  public string ID { get; set; }

        [DefaultValue("")]
        public string TIPO { get; set; }

        [DefaultValue("")]
        public string NOME { get; set; }
...
11.886 messaggi dal 09 febbraio 2002
Contributi
Il codice che ti ho inviato vale per la deserializzazione del json, non per il mapping con Automapper.

La tua action ha questa firma, dove sei tu stesso a decretare quali sono i valori di default.
public IHttpActionResult GetContatti(string search = null, int from = 0, int to = 3)


Il codice che ti ho fornito io invece funziona quando hai un dto come argomento dell'action. Infatti, in questo caso è JSON.NET a popolarlo in base al json che ha ricevuto dal client.
public IHttpActionResult GetContatti(SearchRequestDto search)


Dove SearchDto è un oggetto fatto come segue. Nota gli attributi DefaultValue.
public class SearchRequestDto {
  public int From { get; set; }
  [DefaultValue(3)]
  public int To { get; set; }
  [DefaultValue("")]
  public string Search { get; set; }
}


Search l'ho incluso nel DTO così non devi neanche fare l'encoding della stringa nell'url, per cui l'attribute routing diventerà:
[Route("api/contatti/")]

Oppure, se ti va in conflitto con altre action:
[Route("api/contatti/search")]


ciao,
Moreno

Enjoy learning and just keep making
944 messaggi dal 11 febbraio 2013
hai ragione mi sono spiegato male
scusate

il problema è che ottengo NULL nella tabella che popolo dopo aver chiamato la webapi

Quando passo ai parametri del controller non ho problemi.

percui debbo agire sulle configurazioni di automapper ?
Modificato da jjchuck il 06 novembre 2018 15.22 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.