Asp.net MVC,在不使用 Ajax 的情况下将数组从视图传递到控制器

Asp.net MVC, Pass Array to Controller From View Without Using Ajax

我正在使用 asp.net mvc 5。我想在不使用 Ajax 的情况下将字符串数组从视图传递到控制器。有人可以帮忙吗?

这个是controller,值在packagelist[]中获取

public ActionResult Create(Business business, string loc, string serv, string[] packagelist)
{
    try
    {               
        if (ModelState.IsValid)
        {
            var a = locationIds;
            business.ServiceId = db.Services.Where(x => x.Title ==serv).Select(x => x.Id).SingleOrDefault();
            business.LocationId = db.Locations.Where(x => (x.Title + " (" + x.State + "), " + x.PostalCode)==loc).Select(x => x.Id).SingleOrDefault();       
            db.Businesses.Add(business);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        else
        {
            foreach(var error in ModelState.Values)
            {
                foreach(var er in error.Errors)
                    ModelState.AddModelError("", er.Exception.ToString());
                }
            }
            ViewData["Packages"] = db.BusinessPackages.Select(x => new SelectListItem
            {
                Text = x.Package,
            });
            return View(business);
        }
    catch(Exception ex)
    {
        ModelState.AddModelError("", ex);
        return View(business);
    }
}

已在视图中创建隐藏输入

<input type="hidden" name="packagelist" id="packagelist" value="" />

然后通过这个函数设置这个隐藏字段的值

$("#theform").submit(function (e) {                   
    e.preventDefault();                     
    var locdiv=$("#maindiv");
    var locations = locdiv.children();
    var loc = [];
    for (var i = 0; i < locations.length; i++)
    {                         
        loc.push(locations.eq(i).text());                          
    }
    // SaveLocations(loc);
    $("#packagelist").val(loc);
    $("#theform").submit();

现在的主要问题是,当我通过 Jquery 设置输入值并将其提交给控制器时,控制器将值数组视为单个值。

我想你可以使用 cookie。

在 JS 中, document.cookie = "CookiesName=" + 值 + ";" + "365;路径=/";

在控制器中, 变量数据 = Request.Cookies["CookiesName"]

要在控制器中接收数组作为参数,您的输入需要特定的命名

<input type="hidden" name="packagelist[0]" id="packagelist_0_" value="" />
<input type="hidden" name="packagelist[1]" id="packagelist_1_" value="" />
<input type="hidden" name="packagelist[2]" id="packagelist_2_" value="" />
...
<input type="hidden" name="packagelist[x]" id="packagelist_x_" value="" />