繁体   English   中英

ASP.NET MVC Ajax:将IList从视图传递到控制器

[英]ASP.NET MVC Ajax: Passing an IList from the View to the Controller

我需要使用POST将网格行从视图传递到控制器。 想法是传递具有以下结构的对象(人员)的IList:

  • 字串名称
  • 字串地址
  • 字串编号

我想从JQGrid读取数据,并将其传递给控制器​​以填充IList。

我正在尝试构建数据对象以通过Ajax数据参数传递。

这是Javascript代码:

$("#saveButton").click(
 function()
 {
   var returnData = '{';
   var existingIDs = $('#listPeople').getDataIDs();

   if (idsPeople.length > 0)
   {
     for (i=0;i<idsPeople.length;i++) 
     {

//Trying to build the obejct data

ret = ret + '"people['+ i +'].Name":' $('#listPeople').getRowData(idsPeople[i]).Name + ',';

ret = ret + '"people['+ i +'].Address":' $('#listPeople').getRowData(idsPeople[i]).Address+ ',';

ret = ret + '"people['+ i +'].Id":' $('#listPeople').getRowData(idsPeople[i]).Id+ ',';

//If it has more than one element
      if (idsPeople.length>1 && (i+1)<idsPeople.length)
      {
        ret = ret + ',';
      }
    }
  }

ret = ret + '}';

我的Ajax函数用于发送:

var url_all = '<%=Url.Action("SaveData") %>;

$.ajax({
type: "POST",
url: url_all,
data: ret,
dataType: "json",
success: function(){
   alert("OK");
 },
error: function(){
   alert("Error: check SaveData");
 } 
});

我的控制器:

public ActionResult SaveData(IList<PeopleHeader> people){

   // using debug to know if "people" variable has any values

   return Json(true);
}

我遇到的问题是一个错误:“ System.NotSupportedException:固定大小集合”,并且没有数据正在传递。

我认为我的问题取决于创建对象...执行此过程有没有更简单的方法?

提前致谢,

问题是您将JSON编码的数据发布到action方法,但是action方法仅接受表单编码的数据(aka contentType:application / www-x-form-urlencoded)。

我认为,如果您只是删除该行:

dataType:“ json”

它应该工作。 或者,如果您确实想发布JSON,则可以尝试JsonValueProvider。

http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM