首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在没有表单的情况下将字符串数组发布到ASP.NET MVC控制器?

如何在没有表单的情况下将字符串数组发布到ASP.NET MVC控制器?
EN

Stack Overflow用户
提问于 2008-11-21 15:32:24
回答 6查看 235.3K关注 0票数 190

我正在创建一个小应用程序来自学ASP.NET MVC和JQuery,其中一个页面是一个项目列表,其中一些可以选择。然后,我想按下一个按钮,并使用JQuery的Post函数向我的控制器发送一个列表(或等效项),其中包含所选项目的I。

我设法获得了一个包含所选元素I的数组,现在我想发布该数组。我可以这样做的一种方法是在我的页面中有一个带有隐藏值的虚拟表单,然后用选定的项设置隐藏的值,并发布该表单;尽管这看起来很粗糙。

有没有一种更干净的方法来实现这一点,通过直接将数组发送到控制器?我尝试了一些不同的方法,但看起来控制器无法映射它正在接收的数据。以下是到目前为止的代码:

代码语言:javascript
复制
function generateList(selectedValues) {
   var s = {
      values: selectedValues //selectedValues is an array of string
   };
   $.post("/Home/GenerateList", $.toJSON(s), function() { alert("back") }, "json");
}

然后我的控制器看起来像这样

代码语言:javascript
复制
public ActionResult GenerateList(List<string> values)
{
    //do something
}

我所得到的只是控制器参数中的一个"null“...

有什么建议吗?

EN

回答 6

Stack Overflow用户

发布于 2010-03-27 06:34:49

仅供参考: JQuery改变了他们序列化post数据的方式。

http://forum.jquery.com/topic/nested-param-serialization

你必须将‘传统型’设置为true,否则

代码语言:javascript
复制
{ Values : ["1", "2", "3"] }

将出来的结果是

代码语言:javascript
复制
Values[]=1&Values[]=2&Values[]=3

而不是

代码语言:javascript
复制
Values=1&Values=2&Values=3
票数 110
EN

Stack Overflow用户

发布于 2008-11-21 18:24:10

不要将数据作为数组发布。To bind to a list, the key/value pairs should be submitted with the same value for each key.

您不应该需要表单来执行此操作。您只需要一个键/值对列表,您可以将其包含在对$.post的调用中。

票数 9
EN

Stack Overflow用户

发布于 2015-01-24 02:56:37

另一种实现也使用对象列表,而不仅仅是字符串:

JS:

代码语言:javascript
复制
var postData = {};
postData[values] = selectedValues ;

$.ajax({
    url: "/Home/SaveList",
    type: "POST",
    data: JSON.stringify(postData),
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function(data){
        alert(data.Result);
    }
});

假设'selectedValues‘是对象数组。

在控制器中,参数是相应ViewModels的列表。

代码语言:javascript
复制
public JsonResult SaveList(List<ViewModel> values)
{    
    return Json(new { 
          Result = String.Format("Fist item in list: '{0}'", values[0].Name) 
    });
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/309115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档