控制器中的参数值为 null

Param value in controller is null

提问人:SFA 提问时间:9/11/2023 最后编辑:SFA 更新时间:9/11/2023 访问量:43

问:

我在ajax中发送了一个表单,但是在我的控制器中没有值,我的值为null

我有一个表格(大表格),当我提交时,我调用了 metthod test()

    function test(rubricId) {
    
        var data = $('#r6_FormEditServiceParameters').serialize();

         $.ajax({
           url: $('#r6_FormEditServiceParameters').attr('data-ajax-url'),
            dataType: "json",
            data: data,
            type: "POST",
            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
            processData: false,
            success: function (ret) {
            // Handle success
          }
        });
    }

在我的控制器中,我没有值,请在此处输入图像描述

我的数据不为空。

我的模型:

        public class ParameterRubricModel
        {
          public string RubricId { get; set; }

          public int ServiceId { get; set; }

           public IList<ServiceParameterModel> Parameters { get; set; }

           public IList<TreeViewItem> Childs { get; set; }

           public IList<string> ServiceToDuplicate { get; set; }
        }

我的数据如下所示:在此处输入图像描述

你有想法吗?

C# ajax ASP.NET 核心

评论

0赞 Community 9/11/2023
请修剪您的代码,以便更轻松地找到您的问题。请遵循这些准则,以创建最小的可重现示例
0赞 Xinran Shen 9/12/2023
您能否提供最少的执行代码来重现您的问题,根据当前信息,我没有发现错误。

答:

0赞 Amit Mohanty 9/11/2023 #1

首先:选项中有拼写错误。它应该正确拼写为 ,而不是 。processDataprocessDataproccessData

第二:使用 发送数据时,还应指定要发送的数据的内容类型。由于要序列化表单,因此应将该选项设置为 。AJAXcontentTypeapplication/x-www-form-urlencoded

第三:确保控制器中的属性与要序列化的表单字段的名称匹配。模型绑定过程依赖于将表单字段名称与模型属性进行匹配。ParameterRubicModel

更新代码:

function test(rubricId) {
    var data = $('#r6_FormEditServiceParameters').serialize();

    $.ajax({
        url: $('#r6_FormEditServiceParameters').attr('data-ajax-url'),
        dataType: "json",
        data: data,
        type: "POST",
        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
        processData: false,
        success: function (ret) {
            // Handle success
        }
    });
}

评论

0赞 SFA 9/11/2023
谢谢,我尝试,但我的值为 null。我的模型与表单匹配。我有不同的选项卡,在另一个选项卡上,我使用完成的模型浏览我的方法。就是在这个表格上,我有空,我想也许是这个表格太大了?我看不出我可能做错了什么
0赞 Amit Mohanty 9/11/2023
如果模型与表单匹配,并且您在操作中仍获得模型的 null 值,则提交的表单数据的大小可能会导致问题。ASP.NET Core对表单数据的大小有默认限制,以防止过多的数据提交,如果您的表单非常大,则可能会超过此限制。SaveParameterRubric
0赞 Amit Mohanty 9/11/2023
打开文件。在方法中,找到 or 行(取决于应用程序的配置)。Startup.csConfigureServicesservices.AddMvc()services.AddControllersWithViews()services.Configure<FormOptions>(options => { options.MultipartBodyLengthLimit = 10 * 1024 * 1024; // For 10 MB });
0赞 SFA 9/11/2023
谢谢,我的配置服务。AddMvc() 中。AddSessionStateTempDataProvider() 。AddNewtonsoftJson(options => { options.SerializerSettings.MaxDepth = 2;选项。SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;选项。SerializerSettings.PreserveReferencesHandling = reserveReferencesHandling.None;});服务业。AddControllersWithViews(options => 个选项。Filters.Add(新 HttpResponseExceptionFilter()));我添加服务。Configure<FormOptions>(options => { options.MultipartBodyLengthLimit = 10 * 1024 * 1024;});但我的模型中仍然没有任何东西