如何将复杂的键值参数表单视图传递给mvc中的控制器?

Posted

技术标签:

【中文标题】如何将复杂的键值参数表单视图传递给mvc中的控制器?【英文标题】:How to pass complex key-value parameters form view to controller in mvc? 【发布时间】:2019-06-10 10:34:21 【问题描述】:

在将复杂的键值对从视图发送到控制器时,我遇到了 ajax 问题。我写了我的ajax查询。除了“currentStateDatas”之外,所有其他变量都正确传递给控制器​​。但是, currentStateDatas 从视图来看是空的。控制器为“currentStateDatas”等待“字符串”,因为我需要它的字符串类型。我无法弄清楚问题所在。请你帮助我好吗 ?顺便说一句,“currentStateDatas”包含 json。它有太多嵌套的键值对。

currentStateDatas = ;
//some values are taken from forms.
$.ajax(
        url: "@Url.Action("SaveTempReport", "Report")",
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify( "categoryIds": categoryIds, "reportName": reportName, "Description": description, "tempReportId": tempReportId, "chartState": currentStateDatas, "deparmentIds": deparmentIds),
        success: function (response) 

        
    );

【问题讨论】:

如果你能提供一个minimal reproducible example,那就太棒了,这样我们就可以看到categoryIds是如何填充的等等。 【参考方案1】:

您的控制器等待currentStateDatas 作为string,但在您的js 代码中它是一个对象,您还应该使用JSON.stringifycurrentStateDatas 转换为字符串。

$.ajax(
        url: "@Url.Action("SaveTempReport", "Report")",
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify( "categoryIds": categoryIds, 
                               "reportName": reportName, 
                               "Description": description, 
                               "tempReportId": tempReportId, 
                               "chartState": JSON.stringify(currentStateDatas), 
                               "deparmentIds": deparmentIds),
        success: function (response) 
        
    );

【讨论】:

嗨,伙计,它工作得很好 :) 非常感谢,我很感激 :))

以上是关于如何将复杂的键值参数表单视图传递给mvc中的控制器?的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串中的加号从视图传递给控制器​​?

如何使用 json 将复杂类型传递给 ASP.NET MVC 控制器

将模型和额外参数从视图传递到 MVC 中的操作

将模型传递给 ASP.NET Core MVC 中的视图

将数据从 MVC 控制器传递到 PHP 中的视图

似乎无法将表单值(在视图中)传递给控制器