2011-12-09 20 views
9

Ho qualcosa che non va con json o ASP.NET MVC, sto usando ASP.NET MVC ed ecco cosa sto mandando dal client.ASP.NET MVC riceve "null" come stringa anziché null

NOTA dopo il debug in Chrome, sto spiegando che questo è ciò che viene passato all'interno di javascript, non sto impostando manualmente Stato a null come è venuta come risultato da qualche altra parte come null. Che ancora una volta non è sotto il mio controllo poiché proviene dal database.

Durante il debug, State visualizza che è nullo, invece di "nullo", ma durante il debug in MVC viene visualizzato "null" anziché null.

$.ajax(
    '/Client/Post', 
    { 
     method: 'POST', 
     data: { 
       Country: 'US', 
    // this is null because it is coming from somewhere else as null 
       State: null 
      } 
    }); 

mio ASP.NET MVC Handler riceve ...

public ActionResult Post(Client model){ 
    if(model.State == "null") 
    { 
     /// this is true... !!!! 
    } 
    if(model.State == null) 
    { 
     // :(this should be true... 
    } 
} 

enter image description here

E 'problema di ASP.NET MVC o jQuery?

Quindi jQuery invia null come "null" o MVC che imposta null come "null"?

SOLUZIONE

ho dovuto creare solo in modo ricorsivo nuova gerarchia di oggetti (clonazione l'oggetto) e inviarlo a jQuery, jQuery i dati trasmessi in forma codificata, in cui non v'è alcun modo per rappresentare nulla, però idealmente jQuery non dovrebbe avere un numero di serie nullo del tutto.

+0

leggere questo: http://stackoverflow.com/questions/801032/null-object-in-javascript –

+0

[http://en.wikipedia.org/wiki/Http #Technical_overview] (http: //en.wikipedia.or g/wiki/Http # Technical_overview) – Esailija

+0

Stai usando IE8? – wsanville

risposta

6

Non inviare il campo:

$.ajax('/Client/Post', 
{ 
    method: 'POST', 
    data: { 
      Country: 'US' 
     } 
}); 


Edit dopo aver riletto tuo post

var data = { 
       Country: 'US', 
       State: null 
      } 
if (!data.State) delete data.State; 
$.ajax('/Client/Post', 
    { 
     method: 'POST', 
     data: data 
    } 
}); 

Questo è lo stesso principio esattamente come sopra FYI

+1

Per favore ** LEGGI **, Viene dal database come risultato da qualche altra parte, ho appena scritto un codice più piccolo per spiegare la situazione, non posso impostarlo come null, anche quando il risultato viene recuperato da MVC, JSON analizza Stato torna a null correttamente invece di "null". –

+0

@AkashKava, scopri come funziona http. TUTTI i messaggi tra server e client sono SOLO stringhe PURE. L'ho già collegato per te. È necessario un parsing esplicito per convertire la stringa '" null "' nel valore ASP.NET 'null', poiché a quanto pare non lo fa automaticamente per te. JSON analizza la stringa PURE nella presentazione di oggetti javascript, quindi ovviamente "null" inviato dal server è un valore null reale in javascript. C'è tanta rabbia ... – Esailija

+0

@Esailija, l'apprendimento di HTTP non ha nulla a che fare con questo, abbiamo la stessa applicazione esatta che funziona su iOS, Flex, Silverlight, ovunque null viene trasformato correttamente, non ha nulla a che fare con il mio apprendimento di http, è semplice che JSON abbia una disposizione corretta per null e dovrebbe essere analizzata o trasformata correttamente. Puoi vedere lo screenshot, è jQuery o mvc chi lo sta facendo male. –

3

jQuery fa questo. È possibile monitorare la richiesta Firebug violinista, cromo dev aiutante, ecc

In questo caso, forse si potrebbe usare una stringa vuota invece di null:

data: { 
    Country: 'US', 
    State: "" 
} 
Problemi correlati