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

ASP.NET Core 6中Kendo Dialog触发Ajax POST时模型无法传递至控制器的问题求助

解决Kendo Dialog Ajax提交后控制器模型为Null的问题

让我们一步步排查你遇到的问题,我看了你的代码,有几个关键点需要调整:

1. 修复Checkbox值的获取逻辑

你当前获取IsActive的方式是错误的——Checkbox的value属性你设为空字符串,而且判断是否选中应该用.checked属性,而非.value。这会导致传递给控制器的IsActive值无效,直接破坏模型绑定:

修改JS里的myModel部分:

IsActive: $('#UserRolePopup').find('#IsActive')[0].checked,

这样就能正确传递布尔值(true/false)给控制器的IsActive属性。

2. 阻止Kendo Dialog按钮的默认行为

Kendo Dialog的Submit按钮自带内置行为,可能会干扰你的Ajax请求,需要在onSubmit函数开头添加阻止默认行为的代码:

function onSubmit(e) { 
    // 阻止默认提交行为,避免页面刷新或请求中断
    e.preventDefault();

    var myModel={ 
        Id:0, 
        RoleNameEn:$('#UserRolePopup').find('#RoleNameEn')[0].value, 
        RoleNameAr:$('#UserRolePopup').find('#RoleNameAr')[0].value, 
        IsActive:$('#UserRolePopup').find('#IsActive')[0].checked, // 这里已修改
        CreatedBy:0, 
        CreatedDate:"", 
        ModifiedBy:0, 
        ModifiedDate:"" 
    }; 
    // 剩下的Ajax代码保持不变
}

3. 验证JSON序列化与模型属性的匹配

确保你的UserRoleDTO类的属性名和JS里的myModel属性完全一致(包括大小写),比如C#类应该是这样的:

public class UserRoleDTO
{
    public int Id { get; set; }
    public string RoleNameEn { get; set; }
    public string RoleNameAr { get; set; }
    public bool IsActive { get; set; }
    public int CreatedBy { get; set; }
    public string CreatedDate { get; set; } // 如果用DateTime类型,JS里要传递合法的日期格式
    public int ModifiedBy { get; set; }
    public string ModifiedDate { get; set; }
}

另外,你当前用的DefaultContractResolver会保持属性名原样,所以JS属性名必须和C#完全匹配。如果后续想改用JS常用的驼峰命名,可以把配置改成:

builder.Services.AddMvc()
    .AddNewtonsoftJson(options => 
        options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver());

这样JS里用roleNameEn也能绑定到C#的RoleNameEn。

4. 检查请求URL是否正确

注意你Ajax里的URL指向的是Delete方法,但注释里写的是Create。如果是新增操作,应该改成@Url.Action("Create", "UserRole"),避免请求到错误的控制器方法。

5. 调试技巧(排查剩余问题)

如果还是无效,可以按F12打开浏览器开发者工具,在Network标签里查看Ajax请求的细节:

  • 检查Request Payload里的JSON结构是否和模型匹配
  • 确认请求的Content-Type是否为application/json; charset=utf-8
  • 查看控制器返回的响应是否包含错误提示

按以上步骤修改后,应该能解决模型为Null的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 20:47:30