Сохраняйте данные в файл json, используя угловые действия js и asp.net mvc - PullRequest
0 голосов
/ 07 мая 2018

Я попытался сохранить данные в файл json, используя угловую запись js $ http на контроллер asp.net

Вот мои коды

вид с угловым 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');
        });

Модал 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; }
    }

Контроллер в 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);


    }

Моя проблема в контроллере JsonResult, где я хотел сохранить опубликованные данные в файл data.json это только хранение данных электронной почты, но не выбранные ответы относительно этого

itemToAdd["selectedanswers"] = userdata.selectedanswers; 

эта строка кода для хранения в индексе, я получаю сообщение об ошибке в этой строке так что отобранные ответы не хранятся в json-файле, я получаю эти данные в console.log

вот мой результат console.log

[console result][1]

Не могли бы вы мне помочь? Спасибо

1 Ответ

0 голосов
/ 07 мая 2018

вы можете попробовать вот так

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

или попробуйте это

itemToAdd["selectedanswers"] 
     =JArray.FromObject(userdata.selectedanswers.select(a=> 
 new { AnswerId = a.AnswerId } ).ToArray());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...