将 ViewBag(具有 int 类型的列表)传递给控制器
本文关键字:控制器 列表 ViewBag 具有 int 类型 | 更新日期: 2023-09-27 17:56:15
我正在尝试在jquery加载时将int类型的列表传递给控制器,但没有成功。这是我的代码:
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: {}
});
}
我可能会看到你的问题,路径。 调试并确保要传递的路径正确,并且实际通过 covtype 传递的数据。
我在这里看到的主要问题是路径,它没有正确传递。尝试使用完整路径,看看会发生什么。
如果您在控制器上编写了调用方法,这将很有帮助,但在您的情况下,您正在发送Get
请求,因此,您可能会指示此值来自 URI,如下所示:
public ActionResult AddAction(object fromDate, [FromUri] List<int> arr)
我可以建议将 ViewBag [int 列表] 的值作为 csv 放入 html 元素中,然后将它们转换为 int 数组并传递给控制器
<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: {}
});
}