0

谁能帮我?

我正在使用 ajax 向我的控制器发送一些数据对象,但是我在控制器中得到了我的对象的空值。我尝试了一切,但什么也没发生。

我的模型 cs:

    public class Cliente
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int IdCliente { get; set; }

    [Required]
    public string Nome { get; set; }

    public string Sobrenome { get; set; }
    public Endereco Endereco { get; set; }
    public string Rg { get; set; }
    public string Cpf { get; set; }
    public Telefone Telefone { get; set; }

    //[DataType(DataType.Date)]
    public DateTime Nascimento { get; set; }

}

我的JavaScript:

var cliente = {
nome: $("#nome"),
sobrenome: $("#sobrenome"),
rg: $("#rg"),
cpf: $("#cpf"),
nascimento: $("#nascimento"),

telefone: { numero: $("#telefone") },

endereco: {
    logradouro: $("#rua"),
    complemento: $("#complemento"),
    bairro: $("#bairro"),
    cidade: $("#cidade"),
    cep: $("#cep"),
}
};

function salva() {
$.ajax({
    type: "POST",
    async: false,
    processData: false,
    data: cliente,
    //dataType: 'json',
    //contentType: 'application/json; charset=utf-8',
    url: 'Cadastro',
    success: function (msg) {
        console.log(msg);
    }
});
}

和我的控制器:

        [HttpPost]
    public ActionResult Cadastro(Cliente cliente)
    {
        if (service.Validate(cliente))
        {
            service.Add(cliente);
            //return RedirectToAction("Inicio");
            return Json(new { Cliente = cliente });
        }
        return View(cliente);
    }
4

3 回答 3

0

尝试移动函数cliente内部的设置salva

function salva() {

var cliente = {
nome: $("#nome"),
sobrenome: $("#sobrenome"),
rg: $("#rg"),
cpf: $("#cpf"),
nascimento: $("#nascimento"),

telefone: { numero: $("#telefone") },

endereco: {
    logradouro: $("#rua"),
    complemento: $("#complemento"),
    bairro: $("#bairro"),
    cidade: $("#cidade"),
    cep: $("#cep"),
}
};


$.ajax({
    type: "POST",
    async: false,
    processData: false,
    data: cliente,
    //dataType: 'json',
    //contentType: 'application/json; charset=utf-8',
    url: 'Cadastro',
    success: function (msg) {
        console.log(msg);
    }
});
}
于 2013-06-02T04:24:19.980 回答
0

您是否忘记.val()了所有选择器?

$("#nome").val();

在通过 AJAX 调用之前发出警报数据,以确保您正在获取数据。

此外,您需要这样做:

将您的更改var clientevar clienteObj,然后尝试以下操作:

 contentType: 'application/json',
 data: JSON.stringify({ cliente: clienteObj})
于 2013-06-02T04:28:31.740 回答
0
   function salva() {

   var cliente = {
   nome: $("#nome").val(),
  sobrenome: $("#sobrenome").val(),
  rg: $("#rg").val(),
  cpf: $("#cpf").val(),
  nascimento: $("#nascimento").val(),

  telefone: { numero: $("#telefone").val() },

  endereco: {
    logradouro: $("#rua").val(),
    complemento: $("#complemento").val(),
    bairro: $("#bairro").val(),
   cidade: $("#cidade").val(),
   cep: $("#cep").val(),
 }
};


 $.ajax({
    type: "POST",
     async: false,
    processData: false,
   data: cliente,
   cache: false,
   contentType: false,
   url: 'Cadastro',
   success: function (msg) {
    console.log(msg);
   }
 });
}

我已将内容类型更改为 false 。这也允许您传递 Javascript 对象。

我还添加了 .val() 以从该 id 中获取价值

于 2016-03-09T15:15:31.487 回答