我在Razor视图中有一个javascript数组,我使用$ .ajax从我的MVC视图调用控制器的GET操作。什么应该是接受从视图传递的Javascript数组的Controller操作的参数类型。 我试图将它保持为“对象”,但它只显示为“[对象]”并且根本没有显示任何属性。 知道如何实现这个目标吗?
答案 0 :(得分:3)
完全取决于数组中类型的值。
比如说,如果你有一个整数数组,就像这样:
var intArray = [1,2,3,4]
然后,在你的控制器中,你有一个List<int>
作为参数类型,控制器很聪明,可以为你找出转换。
然而,如果你想要一些更高级的东西,我猜你就是这样,例如:
var customArray = [{hello: "world", foo: "bar"}]
然后最好在.NET中创建一个自定义对象,其中hello
和foo
作为属性,例如:
public CustomObject {
public string hello { get; set; }
public string foo { get; set; }
}
然后您可以使用CustomObject
或List<CustomObject>
作为参数类型,Controller会为您映射属性...就像魔法一样。
答案 1 :(得分: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){}
检查HERE