
###前提・実現したいこと
最初に開いた時に下の方にボタン一覧を表示し、テキストボックスに入れた値をADDボタンで追加、POST送信して、Index.cshtmlのボタンを増やそうとしております。
###発生している問題・エラーメッセージ
デバッグするとIndex.cshtmlまで動いているのですが、画面が更新されていないような状態です。
特になし
###該当のソースコード
【Index.cshtml】 <form name="frmEtc"> <input type="text" name="etchour" id="etchour" value="00" maxlength="2" style="width:80px">: <input type="text" name="etcmin" id="etcmin" value="15" maxlength="2" style="width:80px"> </form> <input type="text" name="outoftask_name" id="otherTitle" value="その他"> <button type="button" class="btn-success" onclick="add_bottoninput_set()">ADD</button> <div class="row"> <!-- ボタン作成される予定 --> <div class="col-md-9" id="btnTasks"></div> </div> <script> // JSONデータを取得 var activities = '@Html.Raw(ViewBag.Json)'; var data = JSON.parse(activities); // ボタンを作成 var html = ""; for (var i = 0; i < data.Others.length; i++) { html += "<button type='button' class='btn btn-info btn-block' style='text-align:left;'>" + data.Others[i].title + "</button><br/>"; } var btnTasks = document.getElementById("btnTasks"); btnTasks.innerHTML = html; // ADDボタン処理 function add_bottoninput_set() { // 初期値 var etchour = 0; var etcmin = 0; etchour = document.frmEtc.etchour.value; etcmin = document.frmEtc.etcmin.value; var length = Object.keys(data.Others).length; var maxIndex = parseInt(length); var delobj = { "title": "", "ActivityHours": "0", "ActivityMinutes": "0", "ActivitySeconds": "0" }; data.Others[maxIndex] = delobj; data.Others[maxIndex].title = document.getElementById("otherTitle").value; data.Others[maxIndex].ActivityHours = etchour; data.Others[maxIndex].ActivityMinutes = etcmin; var req = new XMLHttpRequest(); req.open("POST", "/Home/Index", true); req.setRequestHeader('Content-Type', 'application/json; charset=utf-8'); req.setRequestHeader('Content-Length', data.length); req.send("{'updateData':'" + JSON.stringify(data) + "'}"); return false } </script> 【HomeContoroller】 namespace WebTest02.Controllers { public class HomeController : Controller { public ActionResult Index() { ViewBag.Title = "テストアプリ"; mdlTEST activities = new mdlTEST(); activities.Others = new List<mdlTEST.TestModel>(); //TODO Azure Storage or SQLから取得 activities.Others.Add(new mdlTEST.TestModel() { title = "その他01" }); activities.Others.Add(new mdlTEST.TestModel() { title = "その他02" }); ViewBag.Json = JsonConvert.SerializeObject(activities); return View(activities); } [HttpPost] public ActionResult Index(string updateData) { mdlTEST activities = new mdlTEST(); activities = JsonConvert.DeserializeObject<mdlTEST>(updateData); ViewBag.Json = JsonConvert.SerializeObject(activities); ModelState.Clear(); return View(activities); } } } 【mdlTEST】 namespace WebTest02.Models { public class mdlTEST { public List<TestModel> Others { get; set; } public class TestModel { public string TaskId { get; set; } public string title { get; set; } public string dueDateTime { get; set; } public string ActivityHours { get; set; } public string ActivityMinutes { get; set; } public string ActivitySeconds { get; set; } public bool IsReported { get; set; } } } }
###試したこと
再描画的なことができればいけるかなと思い、reloadを入れて見ましたがすべて初期値に戻ってしまいました。
原因がわかる方がいらっしゃったら御教授お願い致します!!