Pregunta

estoy tratando de utilizar las nuevas ModelBinders JSON en MVC 3 que Scott Guthrie habla de en su blog.

Mi ejemplo es muy similar a la que él está utilizando. Tengo un modelo con 3 valores que estoy intentando escribir un mensaje en el servidor.

Las miradas modelo como este:

public class CommentViewModel
{
    public string Product { get; set; }
    public string Text { get; set; }
    public string Author { get; set; }
}

El JavaScript parece a esto:

$("#addComment").click(function () {

    var comment = {
        Product: $("#productName").html(),
        Text: $("#comment").val(),
        Author: $("#author").val()
    };

    alert("value=" + JSON.stringify(comment));

    $.ajax({                                                    
        url: "/Home/Add",                                       
        type: "POST",                                           
        data: JSON.stringify(comment),                          
        datatype: "json",                                       
        contentType: "application/json; charset=utf-8",         
        success: function (data) {                              
            alert(data);                                        
        }                                                       
    });                                                         
});   

Las miradas acción del controlador como este:

[HttpPost]
public ActionResult Add(CommentViewModel comment)
{
      // ...
}

La alerta que estoy recibiendo (el interior del poste JavaScript) me da algo le gusta esto:

value={"Product":"Classic","Text":"the comment","Author":"me"}

Estoy esperando las propiedades en el modelo a ser poblada en el servidor, pero todas las propiedades son nulos. Estoy usando ASP.NET MVC 3 Vista Previa 1.

¿Fue útil?

Solución

Creo que podría deberse a que ASP.NET MVC 3 Vista Previa 1 no está registrando la JsonValueProviderFactory automagicamente como se esperaba.

Ponga el siguiente fragmento en Global.asax para registrar manualmente, se debe fijar a resolver su problema:

ValueProviderFactories.Factories.Add(new JsonValueProviderFactory())

Otros consejos

bastante seguro de que es necesario cambiar las siguientes líneas

$.ajax({                                                    
    url: "/Home/Add",
    type: "POST",
    data: comment,
    datatype: "json",
    success: function (data) {
        alert(data);
    }
});

Aviso He quitado la stringify y la contenttype

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top