簡體   English   中英

將列表和字符串數據從Ajax傳遞到MVC 4中的控制器,列表是否為NULL?

[英]passing List and String data from ajax to controller in mvc 4, getting NULL for list?

嗨,我是JavaScript和MVC的新手,我正在嘗試將List和string傳遞給我的控制器。

JavaScript看起來像:

 var parms = {
                  globalList: globalList,
                  fieldName: fieldName
              };
              $.ajax({
                  //contentType: 'application/json; charset=utf-8',
                  type: "POST",
                  traditional: true,
                  url: "/Home/SaveField",
                  async: false,
                  data: parms,
                  dataType: "json",
                  success: function (data) {
                      console.log("uspjeh");
                  },
                  error: function (errorData) {
                      console.log("errors");
                  }

              });
          });

和控制器看起來像:

public void SaveField(List<Point> globalList, String fieldName)
{
  // filedName is correctly passed
  // list is null
}

有人可以幫我嗎?

點類:

public class Point
{
  [Key]
  public int PointId { get; set; }
  public float GeoDuzina { get; set; }
  public float GeoSirina { get; set; }
  [ForeignKey("Data")]
  public int DataId { get; set; }
  public virtual Data Data { get; set; }
}

它不會工作。 如果您進行一些調試,則會看到您將這樣的內容發布到服務器:

globalList:[object Object]
globalList:[object Object]
globalList:[object Object]

它只是字符串數組。 但是有一種方法可以做您想要的。 您可以將數組序列化為json,然后在控制器中反序列化。 只需將參數更改為:

var parms = {
    globalList: JSON.stringify(globalList),
    fieldName: fieldName
};

動作:

[HttpPost]
public void SaveField(string globalList, string fieldName)
{
    var serializer = new JavaScriptSerializer(); //use any serializer you want
    var list = serializer.Deserialize<List<Point>>(globalList);
}

或者,您可以從HTML表單中使param對象看起來像:

var parms = {
     "globalList[0].GeoDuzina": 51.506760996586294, 
     "globalList[0].GeoSirina": -0.06106463202740998,
     "globalList[1].GeoDuzina": 51.516269286402846, 
     "globalList[1].GeoSirina": -0.056258113472722464,
     "globalList[2].GeoDuzina": 51.50419662363912, 
     "globalList[2].GeoSirina": -0.044413478462956846,
     fieldName: fieldName
 };

它與您的動作配合。

還有許多其他方法可以做到這一點。 我只給他們看兩個。 對你有好處嗎?

順便說一句。 這個數字對於浮點數來說太長了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM