我在我的 Razor 视图中有一个 javascript 数组,我正在使用 $.ajax 从我的 MVC 视图中调用控制器的 GET 操作。将接受从视图传递的 Javascript 数组的控制器操作的参数类型应该是什么。我试图将其保留为“对象”,但它仅将其显示为“[对象]”并且根本不显示任何属性。知道如何实现这一目标吗?
问问题
2301 次
2 回答
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>
作为你的参数类型,控制器会为你映射属性......就像魔术一样。
于 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 回答