Javascript 使用ajax将Json映射传递给MVC控制器

Javascript 使用ajax将Json映射传递给MVC控制器,javascript,json,ajax,model-view-controller,controller,Javascript,Json,Ajax,Model View Controller,Controller,我需要将map(dictionary)和一个字符串参数一起传递给MVC控制器 var reportName= 'ReportName'; var FilterValues = new Map([ [0, "value1"], [1, "value2"], [2, "value3"], ]); var model = { reportName: reportName, FilterValues: JSON.parse(FilterValues) }; $.ajax({

我需要将map(dictionary)和一个字符串参数一起传递给MVC控制器

var reportName= 'ReportName';

    var FilterValues = new Map([
[0, "value1"],
[1, "value2"],
[2, "value3"],
]);

var model = { reportName: reportName, FilterValues: JSON.parse(FilterValues) };
        $.ajax({
            url: '/Reports/ExportReport/',
            type: 'POST',
            contentType: "application/json",
            data: model,
        success: function(){
            alert('success');
        }, 
        error: function(){
            alert('failure');
        }
    });


 public void ExportReport(string reportName, Dictionary<int, string> FilterValues)

        {

这是我最后一次尝试

像这样在MVC中设置您的模型

        public class SpecialDataModel
        {
            public string reportName { get; set; }
            public List<SingleFilterValue> FilterValues { get; set; }
        }

        public class SingleFilterValue
        {
            public int id { get; set; }
            public string value{ get; set; }
        }
        [HttpPost]
        public void ExportReport(SpecialDataModel myData)
        {



        }
var reportName= 'ReportName';
var FilterValues = [];
FilterValues.push({'id': 0, 'value': 'value1'});
FilterValues.push({'id': 1, 'value': 'value2'});
FilterValues.push({'id': 2, 'value': 'value3'});

var model = JSON.stringify({ 'reportName' : reportName, 'FilterValues' : FilterValues });

像这样为ajax数据属性设置数据

        public class SpecialDataModel
        {
            public string reportName { get; set; }
            public List<SingleFilterValue> FilterValues { get; set; }
        }

        public class SingleFilterValue
        {
            public int id { get; set; }
            public string value{ get; set; }
        }
        [HttpPost]
        public void ExportReport(SpecialDataModel myData)
        {



        }
var reportName= 'ReportName';
var FilterValues = [];
FilterValues.push({'id': 0, 'value': 'value1'});
FilterValues.push({'id': 1, 'value': 'value2'});
FilterValues.push({'id': 2, 'value': 'value3'});

var model = JSON.stringify({ 'reportName' : reportName, 'FilterValues' : FilterValues });


像这样在MVC中设置您的模型

        public class SpecialDataModel
        {
            public string reportName { get; set; }
            public List<SingleFilterValue> FilterValues { get; set; }
        }

        public class SingleFilterValue
        {
            public int id { get; set; }
            public string value{ get; set; }
        }
        [HttpPost]
        public void ExportReport(SpecialDataModel myData)
        {



        }
var reportName= 'ReportName';
var FilterValues = [];
FilterValues.push({'id': 0, 'value': 'value1'});
FilterValues.push({'id': 1, 'value': 'value2'});
FilterValues.push({'id': 2, 'value': 'value3'});

var model = JSON.stringify({ 'reportName' : reportName, 'FilterValues' : FilterValues });

像这样为ajax数据属性设置数据

        public class SpecialDataModel
        {
            public string reportName { get; set; }
            public List<SingleFilterValue> FilterValues { get; set; }
        }

        public class SingleFilterValue
        {
            public int id { get; set; }
            public string value{ get; set; }
        }
        [HttpPost]
        public void ExportReport(SpecialDataModel myData)
        {



        }
var reportName= 'ReportName';
var FilterValues = [];
FilterValues.push({'id': 0, 'value': 'value1'});
FilterValues.push({'id': 1, 'value': 'value2'});
FilterValues.push({'id': 2, 'value': 'value3'});

var model = JSON.stringify({ 'reportName' : reportName, 'FilterValues' : FilterValues });


因为JSON不支持ES2015构造,比如Map。我们需要自定义类,如下所示:

 public class ViewModel
    {
        public List<FilterValue> FilterValues { get; set; }
        public string ReportName { get; set; }
    }

    public class FilterValue
    {
        public int Id { get; set; }
        public string Value { get; set; }
    }
然后,视图的脚本将是:

@section scripts{
    <script>
        $(function () {
            var reportName = 'ReportName';
            var filterValues = [];

            filterValues.push({ 'Id': 0, 'Value': 'value1' });
            filterValues.push({ 'Id': 1, 'Value': 'value2' });
            filterValues.push({ 'Id': 2, 'Value': 'value3' });

            var model = JSON.stringify({ ReportName: reportName, FilterValues: filterValues});
            $.ajax({
                url: '/Home/ExportReport/',
                type: 'POST',
                contentType: "application/json",
                data:  model,
                success: function () {
                    alert('success');
                },
                error: function () {
                    alert('failure');
                }
            });
        });
    </script>
}
@节脚本{
$(函数(){
var reportName='reportName';
var filterValues=[];
push({'Id':0,'Value':'value1'});
push({'Id':1,'Value':'value2'});
push({'Id':2,'Value':'value3'});
var model=JSON.stringify({ReportName:ReportName,FilterValues:FilterValues});
$.ajax({
url:“/Home/ExportReport/”,
键入:“POST”,
contentType:“应用程序/json”,
数据:模型,
成功:函数(){
警惕(“成功”);
},
错误:函数(){
警报(“故障”);
}
});
});
}

因为JSON不支持诸如Map之类的ES2015构造。我们需要自定义类,如下所示:

 public class ViewModel
    {
        public List<FilterValue> FilterValues { get; set; }
        public string ReportName { get; set; }
    }

    public class FilterValue
    {
        public int Id { get; set; }
        public string Value { get; set; }
    }
然后,视图的脚本将是:

@section scripts{
    <script>
        $(function () {
            var reportName = 'ReportName';
            var filterValues = [];

            filterValues.push({ 'Id': 0, 'Value': 'value1' });
            filterValues.push({ 'Id': 1, 'Value': 'value2' });
            filterValues.push({ 'Id': 2, 'Value': 'value3' });

            var model = JSON.stringify({ ReportName: reportName, FilterValues: filterValues});
            $.ajax({
                url: '/Home/ExportReport/',
                type: 'POST',
                contentType: "application/json",
                data:  model,
                success: function () {
                    alert('success');
                },
                error: function () {
                    alert('failure');
                }
            });
        });
    </script>
}
@节脚本{
$(函数(){
var reportName='reportName';
var filterValues=[];
push({'Id':0,'Value':'value1'});
push({'Id':1,'Value':'value2'});
push({'Id':2,'Value':'value3'});
var model=JSON.stringify({ReportName:ReportName,FilterValues:FilterValues});
$.ajax({
url:“/Home/ExportReport/”,
键入:“POST”,
contentType:“应用程序/json”,
数据:模型,
成功:函数(){
警惕(“成功”);
},
错误:函数(){
警报(“故障”);
}
});
});
}

JSON不支持ES2015构造,例如
Map
。根据需要使用对象或数组。请注意,在您的示例中,使用
Map
对您没有任何好处。谢谢。用物体试过了。因为某种原因没有工作。关于如何改进代码有什么建议吗?JSON不支持ES2015构造,例如
Map
。根据需要使用对象或数组。请注意,在您的示例中,使用
Map
对您没有任何好处。谢谢。用物体试过了。因为某种原因没有工作。关于如何改进代码有什么建议吗?