C# 将ViewBag(具有int类型的列表)传递给控制器
我试图在jquery加载时将int类型的列表传递给控制器,但未成功。 这是我的密码:C# 将ViewBag(具有int类型的列表)传递给控制器,c#,jquery,asp.net-mvc,jquery-ui-dialog,C#,Jquery,Asp.net Mvc,Jquery Ui Dialog,我试图在jquery加载时将int类型的列表传递给控制器,但未成功。 这是我的密码: function Addcov() { var dt = '@ViewBag.dt'; @{ List<int> covtypes = new List<int>(); foreach (var item in ViewBag.CovTypes) { covtypes.Add(item);
function Addcov() {
var dt = '@ViewBag.dt';
@{
List<int> covtypes = new List<int>();
foreach (var item in ViewBag.CovTypes)
{
covtypes.Add(item);
}
}
alert('@covtypes');
$("#Form").dialog({
autoOpen: true,
width: 1000,
resizable: false,
title: 'Add',
modal: true,
open: function () {
$(this).load(
'../controller/AddAction',
{ fromDate: dt, CovTypes: JSON.stringify('@covtypes') },
function (response, status, xhr) {});
},
buttons: {}
});
}
函数Addcov(){
var dt='@ViewBag.dt';
@{
列表类型=新列表();
foreach(ViewBag.CovTypes中的变量项)
{
添加(项目);
}
}
警报(“@covtypes”);
$(“#表单”)。对话框({
自动打开:对,
宽度:1000,
可调整大小:false,
标题:“添加”,
莫代尔:是的,
打开:函数(){
$(此)。加载(
“../controller/AddAction”,
{fromDate:dt,CovTypes:JSON.stringify('@CovTypes')},
功能(响应、状态、xhr){};
},
按钮:{}
});
}
我可能看到了您的问题,路径。调试并确保所传递的路径正确,并且数据实际上是通过CovType传递的
我在这里看到的主要问题是路径,它没有正确地传递。
尝试完整路径,看看会发生什么 我可能会看到你的问题,路径。调试并确保所传递的路径正确,并且数据实际上是通过CovType传递的 我在这里看到的主要问题是路径,它没有正确地传递。
尝试完整路径,看看会发生什么 如果您已经在控制器上编写了调用方法,这将很有帮助,但是在您的情况下,您正在发送一个
Get
请求,因此,您可能会指出该值来自URI,如下所示:
public ActionResult AddAction(object fromDate, [FromUri] List<int> arr)
public ActionResult AddAction(object fromDate,[FromUri]List arr)
如果您已经在控制器上编写了调用方法,这将很有帮助,但是在您的情况下,您正在发送一个Get
请求,因此,您可能会指示此值来自URI,如下所示:
public ActionResult AddAction(object fromDate, [FromUri] List<int> arr)
public ActionResult AddAction(object fromDate,[FromUri]List arr)
我可以建议将ViewBag[List of int]的值作为csv放在html元素中,然后将它们转换为int数组并作为csv传递给控制器
<input type="hidden" id="list" value="@ViewBag.CovTypes.Aggregate((x,y)=>x+","+y)" />
function Addcov() {
var data=$("#list").val().split(",")map(function(i,e){ return parseInt(e); });
$("#Form").dialog({
autoOpen: true,
width: 1000,
resizable: false,
title: 'Add',
modal: true,
open: function () {
$(this).load(
'../controller/AddAction',
{ fromDate: dt, CovTypes:JSON.stringify(data) },
function (response, status, xhr) {});
},
buttons: {}
});
}
函数Addcov(){
var data=$(“#list”).val().split(“,”)map(函数(i,e){return parseInt(e);});
$(“#表单”)。对话框({
自动打开:对,
宽度:1000,
可调整大小:false,
标题:“添加”,
莫代尔:是的,
打开:函数(){
$(此)。加载(
“../controller/AddAction”,
{fromDate:dt,CovTypes:JSON.stringify(data)},
功能(响应、状态、xhr){};
},
按钮:{}
});
}
我可以建议将ViewBag[List of int]的值作为csv放在html元素中,然后将它们转换为int数组并作为csv传递给控制器
<input type="hidden" id="list" value="@ViewBag.CovTypes.Aggregate((x,y)=>x+","+y)" />
function Addcov() {
var data=$("#list").val().split(",")map(function(i,e){ return parseInt(e); });
$("#Form").dialog({
autoOpen: true,
width: 1000,
resizable: false,
title: 'Add',
modal: true,
open: function () {
$(this).load(
'../controller/AddAction',
{ fromDate: dt, CovTypes:JSON.stringify(data) },
function (response, status, xhr) {});
},
buttons: {}
});
}
函数Addcov(){
var data=$(“#list”).val().split(“,”)map(函数(i,e){return parseInt(e);});
$(“#表单”)。对话框({
自动打开:对,
宽度:1000,
可调整大小:false,
标题:“添加”,
莫代尔:是的,
打开:函数(){
$(此)。加载(
“../controller/AddAction”,
{fromDate:dt,CovTypes:JSON.stringify(data)},
功能(响应、状态、xhr){};
},
按钮:{}
});
}
那么问题出在哪里?你把Razor代码(服务器端)和javascript(客户端)搞混了。两者之间没有直接的互动。您可以使用Razor生成javascript——查看呈现页面的源代码,以查看将运行的代码。下面是如何操作的。那么问题是什么呢?你把Razor代码(服务器端)和javascript(客户端)搞混了。两者之间没有直接的互动。您可以使用Razor生成javascript——查看呈现页面的源代码,以查看将运行的代码。下面是如何操作的。那么问题是什么呢?你把Razor代码(服务器端)和javascript(客户端)搞混了。两者之间没有直接的互动。您可以使用Razor生成javascript——查看呈现页面的源代码,以查看将运行的代码。下面是如何操作的。路径是正确的,发布到“fromDate”的数据是有效的,但“covtypes”发布为--System。[List.Int32…当然不是实际的列表!因为您的列表是List covtypes=new List();列表中没有数据,但有int!因此列表包含System的数据。[List.Int32]。您需要传递值而不是int。编辑:请注意,您还将“@covtypes”字符串化,以便json看到列表,但不查看foreach值。因此,您得到的结果是:System。[list.Int32]路径正确,传递到“fromDate”的数据有效,但“covtypes”传递为--System。[List.Int32…但当然不是实际的列表!因为您的列表是List covtypes=new List();列表中没有数据,但有一个int!因此列表包含系统的数据。[List.Int32]。您需要传递值而不是int。编辑:请注意,您还将“@covtypes”字符串化,以便json看到列表,但不查看foreach值。因此,您得到的结果是:System。[list.Int32]路径正确,传递到“fromDate”的数据有效,但“covtypes”传递为--System。[List.Int32…但当然不是实际的列表!因为您的列表是List covtypes=new List();列表中没有数据,但有一个int!因此列表包含系统的数据。[List.Int32]。您需要传递值而不是int。编辑:请注意,您还将“@covtypes”字符串化,以便json看到列表,但不查看foreach值。因此,您得到的回报是:System。[list.Int32]