将 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: {}
        });
    }

将 ViewBag(具有 int 类型的列表)传递给控制器

我可能会看到你的问题,路径。 调试并确保要传递的路径正确,并且实际通过 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: {}
    });
 }