1

I have tried to save data to json file using angular js $http post to asp.net controller

Here is my codes

view with angular js

 var postdata =
                             {

                                 Email: "test1@gmail.com",
                                 selectedanswers: jsonArr
                             };
        $http({
            url: "/page/PostFileWithData",
            headers: {
                'Content-Type': 'application/json; charset=utf-8'
            },
            method: "POST",
            dataType: "json",
            traditional: true,
            data: JSON.stringify(postdata)
        }).success(function (data) {
            console.log(data);
        }).error(function (data) {
            console.log('fail');
        });

Modal is asp.net c#

public class UserModel
    {

        public string Email { get; set; }
        //public string selectedanswers { get; set; }
        //public Dictionary<int, int> selectedanswers { get; set; }

        //public List<selectedanswersModel> selectedanswers { get; set; }
        public List<Answer> selectedanswers { set; get; }

    }


    public class Answer
    {

        public int AnswerId { set; get; }
    }

Controller in asp.net

[HttpPost]
    public JsonResult PostFileWithData(UserModel userdata)
    {


        UserModel udata = new UserModel
        {
            Email = userdata.Email,
            selectedanswers = userdata.selectedanswers
        };

        var json = System.IO.File.ReadAllText(Server.MapPath("~/App_Data/data.json"));


          JArray array = JArray.Parse(json);
          var itemToAdd = new JObject();
          itemToAdd["Email"] = userdata.Email;
          itemToAdd["selectedanswers"] = userdata.selectedanswers;  
          array.Add(itemToAdd);

          var jsonToOutput = JsonConvert.SerializeObject(array, Formatting.Indented);

          System.IO.File.WriteAllText(Server.MapPath("~/App_Data/data.json"), jsonToOutput);




        return Json(udata, JsonRequestBehavior.AllowGet);


    }

My problem is in controller action JsonResult which at where i wanted to save posted data to data.json file this only storing Email data but not selected answers regarding this

itemToAdd["selectedanswers"] = userdata.selectedanswers; 

this line of code to store at the index, i am getting error in this line so selectedanswers not storing to json file, i am receiving this data at console.log

here is my console.log result

[console result][1]

Can you please help me? Thanks

Vikas
  • 11,859
  • 7
  • 45
  • 69

1 Answers1

1

you can try like this

itemToAdd["selectedanswers"] 
     =JArray.FromObject(userdata.selectedanswers.select(a=> a.AnswerId).ToArray());

or try this

itemToAdd["selectedanswers"] 
     =JArray.FromObject(userdata.selectedanswers.select(a=> 
 new { AnswerId = a.AnswerId } ).ToArray());
Pranay Rana
  • 175,020
  • 35
  • 237
  • 263