提问人:SFA 提问时间:9/11/2023 最后编辑:SFA 更新时间:9/11/2023 访问量:43
控制器中的参数值为 null
Param value in controller is null
问:
我在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; }
}
我的数据如下所示:在此处输入图像描述
你有想法吗?
答:
0赞
Amit Mohanty
9/11/2023
#1
首先:选项中有拼写错误。它应该正确拼写为 ,而不是 。processData
processData
proccessData
第二:使用 发送数据时,还应指定要发送的数据的内容类型。由于要序列化表单,因此应将该选项设置为 。AJAX
contentType
application/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.cs
ConfigureServices
services.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;});但我的模型中仍然没有任何东西
评论