You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework项目Ajax请求控制器接收空值问题求助

问题排查与解决步骤

1. 修复客户端对象构造错误

你在构建myNewModel时错误地用对象包裹了属性值(比如{ codigoInterno }),生成了嵌套结构,和服务端模型不匹配。应直接赋值:

var myNewModel = {
    "CodigoInterno": codigoInterno,
    "AreaFuncional": areaFuncional,
    "Nombre": nombre,
    "Descripcion": descripcion,
    "Estado": "En desarrollo",
    "Tipo": tipo,
    "Responsable": usuario,
    "Importado": importado,
    "FechaCreacion": getCurrentDateTime() 
}

2. 移除重复的JSON序列化

当前对myNewModel做了两次序列化(先JSON.stringify再在ajax的data里重复调用),导致数据变成转义后的无效字符串。修正ajax代码:

var modelJson = JSON.stringify(myNewModel);

$.ajax({
    type: "POST",
    url: '@Url.Action("CreateNewModel", "Modelos")',
    data: modelJson,
    contentType: 'application/json',
    dataType : "json"
}).done(function () {
    window.alert("success");
});

3. 修改控制器参数绑定方式

方案A:直接用模型类自动绑定(推荐)

把控制器参数改成ModelToImport并添加[FromBody]特性,让MVC自动解析请求体JSON:

[HttpPost]
public ActionResult CreateNewModel([FromBody] ModelToImport model)
{
    if (model != null && ModelState.IsValid)
    {
        Modelo modelo = new Modelo
        {
            CodigoInterno = model.CodigoInterno,
            AreaFuncional = model.AreaFuncional,
            Nombre = model.Nombre,
            Descripcion = model.Descripcion,
            Estado = model.Estado,
            Tipo = model.Tipo,
            Responsable = model.Responsable,
            Importado = model.Importado,
            FechaCreacion = model.FechaCreacion
        };
        db.Modelo.Add(modelo);
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View();
}

方案B:接收字符串并手动反序列化

若坚持用字符串参数,必须加[FromBody],否则.NET Framework MVC不会从请求体读取字符串:

[HttpPost]
public ActionResult CreateNewModel([FromBody] string model)
{
    if (!string.IsNullOrEmpty(model))
    {
        ModelToImport importModel = JsonConvert.DeserializeObject<ModelToImport>(model);
        // 后续逻辑同上
    }
    return RedirectToAction("Index");
}

4. 验证日期格式

确保getCurrentDateTime()返回ISO 8601标准的日期字符串(如"2024-05-20T12:34:56"),否则MVC无法正确解析为DateTime类型。

额外检查

  • 打开浏览器开发者工具(F12)的网络标签,查看请求Payload,确认JSON结构无嵌套或转义错误。
  • 检查模型类属性名称与客户端JSON的一致性(MVC默认大小写不敏感,但保持一致可避免潜在问题)。

内容的提问来源于stack exchange,提问作者Luis Bauer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 03:48:35