如何在没有表单的情况下将字符串数组发布到ASP.NETMVC控制器?我正在创建一个小应用程序来教自己ASP.NETMVC和JQuery,其中一个页面是可以选择的项目列表。然后,我想按一个按钮,使用JQuery的POST函数,向我的控制器发送一个列表(或类似的内容),其中包含所选项目的ID。我设法获得了一个数组,其中包含了所选元素的ID,现在我想发布它。我可以这样做的一种方法是在页面中有一个带有隐藏值的虚拟表单,然后用所选的项设置隐藏的值,并发布该表单;不过,这看起来很粗糙。通过将数组直接发送到控制器,是否有更干净的方法来实现这一点?我尝试了一些不同的东西,但看起来控制器无法映射它正在接收的数据。以下是目前为止的代码:function generateList(selectedValues) {
var s = {
values: selectedValues //selectedValues is an array of string
};
$.post("/Home/GenerateList", $.toJSON(s), function() { alert("back") }, "json");}然后我的控制器看起来像这样public ActionResult GenerateList(List<string> values){
//do something}我得到的只是控制器参数中的“NULL”.有小费吗?
3 回答
陪伴而非守候
TA贡献1757条经验 获得超8个赞
更新:我更新了jQuery,将“传统”设置为true,这样它将再次工作(per@dustinDavis‘答案)。
function test(){ var stringArray = new Array(); stringArray[0] = "item1"; stringArray[1] = "item2"; stringArray[2] = "item3"; var postData = { values: stringArray }; $.ajax({ type: "POST", url: "/Home/SaveList", data: postData, success: function(data){ alert(data.Result); }, dataType: "json", traditional: true });}
public JsonResult SaveList(List<String> values){ return Json(new { Result = String.Format("Fist item in list: '{0}'", values[0]) });}
慕容708150
TA贡献1831条经验 获得超4个赞
- 3 回答
- 0 关注
- 559 浏览
添加回答
举报
0/150
提交
取消