Javascript 使用ajax将Json映射传递给MVC控制器
我需要将map(dictionary)和一个字符串参数一起传递给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({
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
对您没有任何好处。谢谢。用物体试过了。因为某种原因没有工作。关于如何改进代码有什么建议吗?