0

我在我的 Razor 视图中有一个 javascript 数组,我正在使用 $.ajax 从我的 MVC 视图中调用控制器的 GET 操作。将接受从视图传递的 Javascript 数组的控制器操作的参数类型应该是什么。我试图将其保留为“对象”,但它仅将其显示为“[对象]”并且根本不显示任何属性。知道如何实现这一目标吗?

4

2 回答 2

3

它完全取决于您的数组中值的类型

说,如果你有一个整数数组,像这样:

var intArray = [1,2,3,4]

然后,在您的控制器中,您将有一个List<int>作为您的参数类型,控制器足够聪明,可以为您计算出转换。

但是,如果您想要更高级的东西,我猜您就是这样,例如:

var customArray = [{hello: "world", foo: "bar"}]

那么最好在 .NET 中创建一个自定义对象,使用hellofoo作为属性,例如:

public CustomObject {
   public string hello { get; set; }
   public string foo { get; set; }
}

然后你可以使用CustomObject, 或List<CustomObject>作为你的参数类型,控制器会为你映射属性......就像魔术一样。

于 2013-05-07T08:59:47.480 回答
3

只需在ajax中传递并添加traditional: true,

var ids = [0,1,2,3];

$.ajax({
   url: '@Url.Action("SomeAction", "Home")',
   type: 'POST',
   traditional: true,
   data: { array: ids },
   ...

控制器

public ActionResult SomeAction(int[] array){}

对于对象数组

var objs = JSON.stringify(your_objects);

$.ajax({
   url: '@Url.Action("SomeAction", "Home")',
   type: 'POST',
   data: { array: objs },
   ...

控制器

public ActionResult SomeAction(List<YourObjectType> array){}

检查这里

于 2013-05-07T08:59:58.470 回答