Recientemente me encontré con un problema al implementar una solución JSON para un cliente. Si el nombre del parámetro de acción coincide con un nombre de propiedad del modelo, el enlace no puede enlazar CUALQUIER propiedad.MVC3 Json Bind Bug?
Un ejemplo:
Controlador personas
public ActionResult SetEmails(Person emails){
...
return Content("");
}
Debido a que el nombre del parámetro se denomina "e-mails" y que coincide con un nombre de propiedad del modelo de persona llamada "correos electrónicos" .. el ligante falla, pero no da ninguna indicación en cuanto a por qué ..
tenían un modelo llamado Persona
public class Person {
public string Name { get; set; }
public List<string> Emails { get; set; }
public Person() {
Emails = new List<string>();
}
}
¿Es esto un error o una 'característica'?
Como una nota al margen, mi pregunta es más acerca de cómo un nombre de argumento podría causar un conflicto a una carpeta? El nombre no debería importar, ya que es el tipo de clase que define su esquema para coincidir con los datos json. ¿Por qué debería importarle al encuadernador el nombre del argumento o si coincide con un nombre de propiedad dentro del tipo de clase del argumento en sí?
¿puede usted publicar el código js llamante, o al menos el JSON que está enviando? –
json sería: {"Nombre": "Juan", "Correos electrónicos": ["[email protected]", "test2 @ test".com "]} El json estaba bien, como indiqué, una vez que cambié el nombre del argumento Acciones de los correos electrónicos (coincide con el nombre de la propiedad de los modelos) a cualquier cosa que no coincidía, funcionó ... pensé que era interesante y no puedo ver por qué esto no debería funcionar, o al menos arrojar una excepción en lugar de una clase instanciada con valores de propiedad nulos!? – Mike