660 messaggi dal 18 febbraio 2002
www.dimsolutions.it
Sto convertendo una funzione che popola un DataTables JQuery da MVC a .NET CORE 2.2.
In MVC funziona e la griglia viene popolata, in .NET CORE ho visto che il namespace mvc JSONRESULT è diverso, può essere questo il problema? la compilazione è ok e i dati ci sono ma il datatable mi dice come se non trova il campo ID.

Per farlo compilare su .NET CORE ho dovuto inserire un NULL come parametro quando istanzio JsonResult e rimuovere JsonRequestBehavior.AllowGet alla fine.

ASP.NET MVC
        public ActionResult GetData(searchNews searchAdv)
        {
// Initialization.   
            JsonResult result = new JsonResult();
            try
            {
                // Initialization.
                string search = Request.Form.GetValues("search[value]")[0];
                string draw = Request.Form.GetValues("draw")[0];
                string order = Request.Form.GetValues("order[0][column]")[0];
                string orderDir = Request.Form.GetValues("order[0][dir]")[0];
                int startRec = Convert.ToInt32(Request.Form.GetValues("start")[0]);
                int pageSize = Convert.ToInt32(Request.Form.GetValues("length")[0]);

                // Loading.   
                List<Models.News> data = c.dsListaNews();

                // Loading drop down lists.   
                result = this.Json(new
                {
                    draw = Convert.ToInt32(draw),
                    recordsTotal = totalRecords,
                    recordsFiltered = recFilter,
                    data = data
                }, JsonRequestBehavior.AllowGet);
            }
        }


ASP.NET CORE 2.2
        public ActionResult GetData(searchNews searchAdv)
        {
            // Initialization.   
            JsonResult result = new JsonResult(null);

                string search = Request.Form["search[value]"][0];
                string draw = Request.Form["draw"][0];
                string order = Request.Form["order[0][column]"][0];
                string orderDir = Request.Form["order[0][dir]"][0];
                int startRec = Convert.ToInt32(Request.Form["start"][0]);
                int pageSize = Convert.ToInt32(Request.Form["length"][0]);            

                // Loading.
                List<Models.News> data = c.dsListaNews(conn);

                // Loading drop down lists.   
                result = this.Json(new
                {
                    draw = Convert.ToInt32(draw),
                    recordsTotal = totalRecords,
                    recordsFiltered = recFilter,
                    data = data
                });


            // Return info.   
            return result;
        }


Modificato da diego78 il 10 maggio 2019 16:17 -

Telesoccorso Lineaperta: Servizi di Telesoccorso
290 messaggi dal 14 novembre 2001
Ciao, seguendo il tuo esempio, sono riuscito a recuperare un risultato Json, semplici stringhe, nella chiamata Ajax

Controller
JsonResult result = new JsonResult(null);
            result = this.Json(new
            {
                _MeseIniziale = this_MeseIniziale,
                _MeseFinale = this_MeseFinale,
                _Anno = this_Anno,
                prova = "Ciao"
            }
            );

return result;


e nella view:
$.ajax({
            type: "GET",
            url: "/VenditeGenerali/prova",
            dataType: 'json',
            data: { _MeseIniziale: DataToPost.MeseIniziale, _MeseFinale: DataToPost.MeseFinale, _Anno: DataToPost.Anno },
            success: function (data) {

                var tr;
                
for (var i = data._MeseIniziale; i <= data._MeseFinale; i++) {

                    tr = $('<tr/>');
                    data.ID_Menu1;
                    tr.append("<td>" + i + "</td>");
                    tr.append("<td>" + data._MeseFinale + "</td>");
                    tr.append("<td>" + data._Anno + "</td>");
                    tr.append("<td>" + data.prova + "</td>");
                    $('table').append(tr);
}
            },
....

E fin qui tutto ok :)



Poi nel controller volevo eseguire una semplice query recuperando i dati di una piccola tabella
            var Sql = from c in _context.Menu1
                                select c;

            JsonResult result = new JsonResult(null);
            result = this.Json(new
            {
                List = Sql.ToList()
            }
            );

            return result;


ma non riesco a recuperare i valori nella view... se scrivo ad esempio
tr.append("<td>" + data + "</td>");

ottengo nella pagina [object Object]

se modifico aggiungendo a data il nome di uno dei campi, es.
tr.append("<td>" + data.IdMenu + "</td>");

ottengo nella pagina [undefined]


Dove mi sto sbagliando secondo voi ?

Campo Testaccio, c'hai tanta gloria...
290 messaggi dal 14 novembre 2001
maurodii ha scritto:

ma non riesco a recuperare i valori nella view... se scrivo ad esempio
tr.append("<td>" + data + "</td>");

ottengo nella pagina [object Object]

se modifico aggiungendo a data il nome di uno dei campi, es.
tr.append("<td>" + data.IdMenu + "</td>");

ottengo nella pagina [undefined]

Dove mi sto sbagliando secondo voi ?


Ho trovato l'errore, lo riporto perché forse può risultare utile a chi, come me, non ha molta esperienza in certe cose.

Il problema è nella iniziale maiuscola di IdMenu: nonostante io nel model abbia definito il campo come IdMenu, all'interno della view in JQuery per riprendere la stringa Json costruita nel Controller, devo scrivere data.idMenu.

E così anche con gli altri campi, a cui viene imposta la prima lettera in minuscolo.

Campo Testaccio, c'hai tanta gloria...

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.