2016-03-05 34 views
1

У меня есть простой базы данныхASP.NET MVC удалить элемент

CREATE TABLE [dbo].[Date] (
[Id] INT  NOT NULL, 
[Name] NCHAR (10) NULL, 
[Date] DATE  NULL, 
PRIMARY KEY CLUSTERED ([Id] ASC) 
); 

она содержит две записи

enter image description here

Мое приложение загрузки Name из базы данных с использованием Date и отображения на экране. enter image description here

Основная проблема заключается в том, что, если я должен удалить один элемент из списка с помощью Remove и чем нажать на кнопку Save data он должен перейти к SaveData ничего. Я думаю, что у меня серьезная архитектурная ошибка, потому что функция SaveData ничего не знает о записи, которую нужно удалить. Как это исправить?

Index.cshtml

@{ 
ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 
<input type="text" value="02.01.2016"> 
<button data-bind="click: loadData">Load data</button> 
<script src="~/Scripts/knockout-2.2.0.js"></script> 
<table> 
<thead> 
    <tr> 
     <th>name</th> 
    </tr> 
</thead> 
<tbody data-bind="foreach: items"> 
    <tr> 
     <td><input data-bind="value: name" /></td> 
     <td><a href="#" data-bind="click: $root.removeItems">Remove item</a></td> 
    </tr> 
</tbody> 
</table> 
<button data-bind="click: saveData">Save data</button> 
<script> 
function MyViewModel(){ 
    var self = this; 
    self.items = ko.observableArray(); 
    self.removeItems = function (item) { 
     self.items.remove(item); 
    } 
    self.loadData = function() { 

     $.ajax({ 
      cache: false, 

      type: "GET", 

      url: "Home/GetData", 

      data: { "date": $("input").val() }, 

      success: function (data) { 
       $.each(data, function (id, item) { 
        self.items.push({ name: item.Name }); 
       }); 
      }, 

      error: function (response) { 
       alert('eror'); 
      } 
     }); 
    } 
    self.saveData = function() { 
     var jsonOfLog = JSON.stringify(self.items()); 
     $.ajax({ 
      type: 'POST', 
      dataType: 'text', 
      url: "Home/SaveData", 
      data: "jsonOfLog=" + jsonOfLog, 
      success: function (returnPayload) { 
       console && console.log("request succeeded"); 
      }, 
      error: function (xhr, ajaxOptions, thrownError) { 
       console && console.log("request failed"); 
      }, 

      processData: false, 
      async: false 
     }); 
    } 
} 
ko.applyBindings(new MyViewModel()); 
</script> 

HomeController:

public ActionResult Index() 
    { 
     return View(); 
    } 
    modelEntities ME = new modelEntities(); 
    [HttpGet] 
    public JsonResult GetData(string date) 
    { 
     DateTime inputdate = DateTime.Parse(date); 

     List<Date> list = ME.Date.Where(key => key.Date1 == inputdate).ToList(); 
     return Json(list, JsonRequestBehavior.AllowGet); 
    } 
    [HttpPost] 
    public string SaveData(string jsonOfLog) 
    { 

     return Convert.ToString(jsonOfLog); 
    } 
+0

'он должен перейти к SaveData nothing' вы можете быть более ясно по этому вопросу. –

+0

Если SaveData должен обновить запись, вы, вероятно, захотите использовать 'Id' – Neps

ответ

0
var jsonOfLog = ko.toJSON({ jsonOfLog: self.items }); 

$.ajax({ 
    url:"Home/SaveData", 
    data: jsonOfLog, 
    type: "post", 
    contentType: "application/json", 
    success: function(result) { 
    alert(result) 
    } 
}); 
Смежные вопросы