C# 使用jquery传递给actioncontroller asp.net mvc 3的数组
我想知道如何在jquery ajax调用传递的asp.net mvc3控制器数组中进行迭代 我的Ajax调用:C# 使用jquery传递给actioncontroller asp.net mvc 3的数组,c#,jquery,asp.net-mvc,arrays,asp.net-mvc-3,C#,Jquery,Asp.net Mvc,Arrays,Asp.net Mvc 3,我想知道如何在jquery ajax调用传递的asp.net mvc3控制器数组中进行迭代 我的Ajax调用: var array = []; array.push({ dir: id }); array.push({ dirToCreate: $("#txtDir").val() }); $.ajax({ Type: 'GET
var array = [];
array.push({ dir: id });
array.push({ dirToCreate: $("#txtDir").val() });
$.ajax({
Type: 'GET',
url: '/Home/CreateFolder/',
data: { 'list': array },
traditional: true,
cache: 'true',
success: function (result) {
alert(result);
}
});
这是我的ActionController:
public ActionResult CreateFolder (IEnumerable<string> list )
{
// how to iterate through the values passed
return Content("ok");
}
[HttpPost]
public ActionResult CreateFolder(string list)
{
var js = new JavaScriptSerializer();
var deserializedObject = (object[])js.DeserializeObject(list);
var myFolders = new List<Folder>();
if (deserializedObject != null)
{
foreach (Dictionary<string, object> newFolder in deserializedObject)
{
myFolders.Add(new Folder(newFolder));
}
}
return Json("");
}
public ActionResult创建文件夹(IEnumerable列表)
{
//如何迭代传递的值
返回内容(“确定”);
}
实际上,我可以像在ActionController
CreateFolder
方法对象
中获得的那样将数组传递给ActionController
吗
谢谢这不是一件直截了当的事,但这里有一个方法。首先将ajax方法更改为:
$.ajax({
type: 'post',
datatype: 'json',
url: '/Home/CreateFolder',
traditional: true,
data: { list: JSON.stringify(array)},
success: function (result) {
alert(result);
}
});
然后在控制器中,需要使用JavascriptSerializer
类对json进行反序列化。在我的示例中,我使用了一个名为folder的类,它位于控制器代码下面。你不必使用这种类型,如果你想通过并在其他地方使用它,它看起来更干净。在控制器中执行以下操作:
public ActionResult CreateFolder (IEnumerable<string> list )
{
// how to iterate through the values passed
return Content("ok");
}
[HttpPost]
public ActionResult CreateFolder(string list)
{
var js = new JavaScriptSerializer();
var deserializedObject = (object[])js.DeserializeObject(list);
var myFolders = new List<Folder>();
if (deserializedObject != null)
{
foreach (Dictionary<string, object> newFolder in deserializedObject)
{
myFolders.Add(new Folder(newFolder));
}
}
return Json("");
}
您好,这似乎是一个很好的解决方案,您的jquery代码与我所说的不同之处在于JSON.stringify(),当我们从jquery传递JSON类型数据时,我们是否需要始终作为JSON.stringify()类型传递?我所看到的一些代码没有将JSON数据传递给actioncontroller的功能,我们应该每次都指定它吗?我在Ajax调用中指定了datatype:json,这是唯一的区别(我在Ajax调用中错过了缓存线,但您可以在中添加它,这没有什么区别)。我只使用json.stringify,因为在本例中,我们使用的是JavaScript数组:)