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

AJAX提交checkbox表单时控制器接收的SearchModel中Status为null如何解决

问题原因

  • AJAX传参时多包装了一层结构。serialize()方法输出的已经是标准application/x-www-form-urlencoded格式的参数字符串,直接作为请求体提交即可,你将它套入{model: model}结构后,相当于把整个序列化字符串作为名为model的参数的值提交,ASP.NET的模型绑定器无法匹配SearchModel的结构,因此绑定失败,Status属性为null。
  • 额外注意:未勾选的复选框不会被serialize()采集,对应索引的Status[i].Selected字段不会出现在请求中,模型绑定会自动给该属性赋值默认值false,只要对应索引的Status[i].ItemText存在就不影响集合绑定。

修复方案

  1. 修改AJAX提交代码,直接传递序列化后的表单参数即可:
$(document).on("click", "#search", function () {
    var formData = $('#divSearchParams').find("input,select,textarea").serialize();
       
    $.ajax({
        url: targetUrl,
        type: 'POST',
        data: formData, // 无需套对象,直接传入序列化结果
        cache: true,
        async: true,
    }).done(function (result) {
   
    }).fail(function (error) {
        
    }).always(function () {
    
    });
});
  1. 可选补充:控制器Action显式指定绑定来源,避免部分配置差异导致的绑定异常:
public async Task<ActionResult> Students([FromForm] SearchModel model)
{

}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:30:01