我正在尝试将一个 int 数组从 JavaScript 传递到一个接受 2 个参数的 MVC 控制器——一个 int 数组和一个 int。这是对控制器操作返回的视图执行页面重定向。
var dataArray = getAllIds(); //passes back a JavaScript array
window.location.replace("/" + controllerName + "/EditAll?ids=" + dataArray + "¤tID=" + dataArray[0])
dataArray 包含 1,7 作为我的示例使用的预期。
控制器代码
public virtual ActionResult EditAll(int[] ids, int currentID)
{
currentModel = GetID(currentID);
currentVM = Activator.CreateInstance<ViewModel>();
currentVM.DB = DB;
currentVM.Model = currentModel;
currentVM.ViewMode = ViewMode.EditAll;
currentVM.ModelIDs = ids;
if (currentModel == null)
{
return HttpNotFound();
}
return View("Edit", MasterName, currentVM);
}
问题是当检查传递给控制器的 int[] id 时,它的值为 null。currentID 按预期设置为 1。
我尝试设置 jQuery.ajaxSettings.traditional = true ,但没有效果我还尝试在 JavaScript 中使用 @Url.Action 创建服务器端 url。在传递数组之前,我还尝试了 JSON.Stringify,例如
window.location.replace("/" + controllerName + "/EditAll?ids=" + JSON.stringify(dataArray) + "¤tID=" + dataArray[0])
id 数组在控制器端再次变为 null。
有没有人有任何关于让 int 数组正确传递给控制器的指针?我可以在 Controller Action 中将参数声明为 String 并手动序列化和反序列化参数,但我需要了解如何让框架自动进行简单的类型转换。
谢谢!