我正在创建一个小应用程序来自学ASP.NET
MVC和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”。
有小费吗?
我修改了响应,以包含我所做的测试应用程序的代码。
更新:我已经更新了jQuery,将’传统’设置设置为true,所以它将再次起作用(根据@DustinDavis的回答)。
首先是javascript:
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]) });
}
当我调用该javascript函数时,我收到一条警报,提示“列表中的第一项:’item1’”。希望这可以帮助!
我正在使用Postman向web API发送字符串数组。web API方法如下所示: Fiddler显示请求的内容类型为 但是我得到一个错误的响应: {"Message":"此资源不支持请求实体的媒体类型'Multipart/form-data'。","ExceptionMessage":"没有MediaTypeForall可用于从媒体类型'Multipart/form-data'的内容中读取类型
我想做一个名为句子的字符串,包含“你好,世界,你好吗?”
问题内容: 我试图将字符串数组作为参数传递给Wetland类的构造函数;我不明白如何将字符串数组的元素添加到字符串数组列表。 问题答案: 您已经具有内置方法:- 注 : -您应该使用没有。 返回一个不同的-> ,不能将其类型转换为。 然后,您将不得不使用方法,这不是很好。所以就用 注意 :-返回的列表是固定大小的列表。如果要向列表中添加某些内容,则需要创建另一个列表,并用于向其中添加元素。所以,那
嗨,我尝试将以下Source类映射到以下Destation类。我使用了以下映射以将字符串值映射到列表字符串。它没有正确映射。我需要知道如何使用Dozer将2个字符串值映射到一个目标字符串列表中。
问题内容: 这是我必须发布的json字符串… 如何发布为JSON? 问题答案: 当然,这是一个重复的问题,但这是完整的示例代码,作为一个长例程。只需复制并粘贴。 首先设置JSON … 接下来,正确异步地将命令和json发送到您的服务器… 最后,(A)使用NSURLConnection正确连接,(B)正确解释从服务器返回给您的信息。 希望它可以节省一些键入的时间!
问题内容: 我有以下代码,但是当我从页面重定向提交时。我希望能够使用jquery / ajax向其发布内容,以便提交时页面不会刷新。有人可以给我看一个jsfiddle演示吗? 问题答案: 看一下jQuery :