2011-12-09 5 views
9

Tengo algo mal con json o ASP.NET MVC, estoy usando ASP.NET MVC y esto es lo que estoy enviando desde el cliente.ASP.NET MVC recibe "nulo" como una cadena en lugar de nulo

NOTA Después de la depuración en Chrome, que estoy explicando que esto es lo que se pasa dentro de Javascript, yo no soy la creación manual Estado como nula, ya que viene como resultado de algún otro lugar como nulo. Que una vez más no está bajo mi control ya que proviene de la base de datos.

Durante la depuración, State muestra que es nulo, en lugar de "nulo", pero al depurar en MVC muestra "nulo" en lugar de nulo.

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

Mi ASP.NET MVC Handler recibe ...

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

enter image description here

¿Es problema de ASP.NET MVC o jQuery?

¿Es jQuery el que envía null como "nulo" o es MVC el que establece null como "nulo"?

SOLUCIÓN

tuve que crear simplemente de forma recursiva nueva jerarquía de objetos (clonación del objeto) y enviarlo a jQuery, como jQuery datos enviados como forma codificada, en la que no hay manera de representar nula, sin embargo idealmente, jQuery no debería tener nulo serializado en absoluto.

+0

leer éste: 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

¿Estás usando IE8? – wsanville

Respuesta

6

No envíe el campo:

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


Edición después de que releer su puesto

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

Este es exactamente el mismo principio que el anterior FYI

+1

** LEER **, viene de la base de datos como resultado de otro sitio, acabo de escribir un código más pequeño para explicar la situación, no puedo establecerlo como nulo, también cuando el resultado se recupera de MVC, JSON analiza el estado volver a anular correctamente en lugar de "nulo". –

+0

@AkashKava, aprenda cómo funciona http. TODOS los mensajes entre el servidor y el cliente son SÓLO cadenas PURE. Ya he vinculado esto para ti. Necesita un análisis explícito para convertir el valor 'nulo '' a ASP.NET 'null' de cadena, ya que aparentemente no lo hace automáticamente por usted. JSON analiza la cadena PURE en la presentación del objeto javascript, por lo que, por supuesto, "nulo" enviado desde el servidor es un valor nulo real en javascript. Tanto furor ... – Esailija

+0

@Esailija, aprender HTTP no tiene nada que ver con esto, tenemos exactamente la misma aplicación que funciona en iOS, Flex, Silverlight, donde null se transforma correctamente, no tiene nada que ver con mi aprendizaje de http, es simple que json tiene una provisión correcta para null y debe ser analizada o transformada correctamente. Puede ver la captura de pantalla, es jQuery o mvc quien lo está haciendo mal. –

3

jQuery hace esto. Puede supervisar la solicitud por el violinista Firebug, cromo dev ayudante, etc.

En este caso, tal vez usted podría utilizar una cadena vacía en lugar de null:

data: { 
    Country: 'US', 
    State: "" 
} 
Cuestiones relacionadas