0

Android デバイスから .net MVC HttpPost メソッドに json 文字列コレクションを渡しています。私のjson文字列は似ています。

{"collection",[{"Name":"A","Age":"12","Class":"10"},{"Name":"B","Age":"12","Class":"10"}]}

私のMVC制御機能は次のとおりです。

  [HttpPost]
    public ActionResult Create(string[] collection)
    {
        try
        {
            // TODO: Add insert logic here
            JavaScriptSerializer json_serializer = new JavaScriptSerializer();
            List<Model.StudentBehaviour> stdbehaviour_list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Model.StudentBehaviour>>(collection);
            Lib.StudentModule.StudentManager.InsertStudentBehaviours(stdbehaviour_list);               
            return Json("success", JsonRequestBehavior.AllowGet);
        }
        catch
        {
            return Json("exception", JsonRequestBehavior.AllowGet);
        }
    }

関数のパラメータ値は

collection = "(Collection)"

コレクションの期待値は

collection[0] 
Name = A 
Age = 12
Class = 10
collection[1] 
Name = B 
Age = 12
Class = 10

この問題を解決するのを手伝ってください

前もって感謝します

4

1 に答える 1

0

ASP.NET MVC には、ModelBinding の概念があります。つまり、Action メソッドにパラメーターを追加すると、MVC は送信したデータをこれらのパラメーターに入力しようとします。

これは、コードを次のように変更できることを意味します。

 // Example of your Student class. 
 // Make sure that all properties you want to bind to are public
 public class Student
 {
     public string Name { get; set; }
     public int Age { get; set; }
     public int Class { get; set; }
 }

// Example of an Action method. Note that instead of taking a string as parameter,
// you just accept a collection of Student objects.
[HttpPost]
public JsonResult Create(List<Student> collection)
{
    if (ModelState.IsValid)
    {
        return Json("success", JsonRequestBehavior.AllowGet);
    }
    else
    {
        return Json("exception", JsonRequestBehavior.AllowGet);
    }
}

その後、次の jquery を使用してデータを投稿できます。

function sendData() {    
        var data = [{ 'Name': 'A', 'Age': '12', 'Class': '10' },
            { 'Name': 'B', 'Age': '12', 'Class': '10' }];

        var collection = JSON.stringify(data);

        $.ajax({
            url: "Home/Create",
            type: "POST",
            data: collection,
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
        }).done(function (msg) {
            alert("Data Saved: " + msg);
        });
    }
于 2012-04-20T08:11:59.637 に答える