2015-01-16 3 views
0

MVC 및 녹아웃을 처음 사용합니다. 녹아웃을 사용하여 바인딩되는 내보기에서 다음 테이블이 있습니다. 다음녹아웃 바인딩을 사용하는 테이블에서 레코드 삭제

 <script type="text/javascript" src="../../Scripts/knockout.mapping-latest.js"></script> 
    <script type="text/javascript" src="~/Scripts/Index.js"></script> 

    <script type="text/javascript"> 
    var data = @Html.Raw(Json.Encode(Model)); 
    //viewModel.DataList(ko.mapping.fromJS(data)); 
    //ko.applyBindings(viewModel2, $("#tblData")[0]); 
    </script> 

하는 index.js


@using PagedList; 
    @using PagedList.Mvc; 
    @model IPagedList<DEMO_JAN14.Models.Provider> 
    @{ 
     Layout = "~/Views/Shared/_Layout.cshtml"; 
    } 
<head> 
    <title>LIST OF PROVIDERS</title> 
</head> 
<body> 
    <div class="container"> 
     <h1>Providers List</h1><br/> 
    <a class="btn btn-primary col-sm-1" href="/Provider/Create">Create</a>  <br/> 

    <table class="table table-bordered" id="tblData"> 
    <tr> 
     <th>Provider Type</th> 
     <th>First Name</th> 
     <th>Last Name</th> 
     <th>Certification</th> 
     <th>Specialization</th> 
     <th>SSN</th> 
     <th>Facility Name</th> 
     <th>Contact No</th> 
     <th>Contact Email</th> 
     <th>Delete</th> 
    </tr> 
    <tbody data-bind="foreach:viewModel.DataList"> 
     <tr> 
      <td class="col-lg-2" data-bind="text: ProviderType"></td> 
      <td class="col-lg-2" data-bind="text: FirstName"></td> 
      <td class="col-lg-2" data-bind="text: LastName"></td> 
      <td class="col-lg-2" data-bind="text: Certification"></td> 
      <td class="col-lg-2" data-bind="text: Specialization"></td> 
      <td class="col-lg-2" data-bind="text: SSN"></td> 
      <td class="col-lg-2" data-bind="text: FacilityName"></td> 
      <td class="col-lg-2" data-bind="text: ContactNumber"></td> 
      <td class="col-lg-2" data-bind="text: ContactEmail"></td> 
      <td><button type="button" id="Delete" class="btn btn-primary"  data-bind="click:$root.Delete">Delete</button></td> 
     </tr> 
    </tbody> 
    </table> 
코드이다.

function ProviderViewModel() { 
var self = this; 
self.ProviderID = ko.observable(""); 
self.ProviderType = ko.observable(""); 
self.FirstName = ko.observable(""); 
self.LastName = ko.observable(""); 
self.Certification = ko.observable(""); 
self.Specialization = ko.observable(""); 
self.SSN = ko.observable(""); 
self.ContactNumber = ko.observable(""); 
self.ContactEmail = ko.observable(""); 
self.FacilityName = ko.observable(""); 
self.DataList = ko.observableArray([]); 

var Provider = 
    { 
     ProviderID: self.ProviderID, 
     ProviderType: self.ProviderType, 
     FirstName: self.FirstName, 
     LastName: self.LastName, 
     Certification: self.Certification, 
     Specialization: self.Specialization, 
     SSN: self.SSN, 
     ContactNumber: self.ContactNumber, 
     ContactEmail: self.ContactEmail, 
     FacilityName: self.FacilityName, 
    }; 

self.Provider = ko.observable(); 
self.Providers = ko.observableArray(); 

// Delete Provider 
self.Delete = function (Provider) { 
    if (confirm('Are you sure you want to delete this row?')) { 
     var id = Provider.ProviderID(); 

     $.ajax({ 
      url: "/Provider/Delete", 
      cache: false, 
      type: 'POST', 
      contentType: 'application/json; charset=utf-8', 
      data: ko.toJSON(id), 
      success: function (data) { 
       self.Providers.remove(Provider); 
       // alert("Record Deleted Successfully"); 
      } 
     }).fail(
      function (xhr, textStatus, err) { 
       alert(err); 
      }); 
     } 
    } //Delete Provider 

} 

var viewModel = new ProviderViewModel(); 

$(document).ready(function() { 
if (data) 
    viewModel.DataList(ko.mapping.fromJS(data)()); 
ko.applyBindings(viewModel); 
}); 

컨트롤러 동작 방법은 그림과 같습니다.

[HttpPost] 
    public ActionResult Delete(int id) 
    { 
     DAL.DeleteProvider(id); 
     return RedirectToAction("Index"); 
    } 

레코드가 전혀 삭제되지 않고 다음 오류가 발생합니다. URL을 찾을 수 없습니다. 올바른 방향으로 안내해 주시겠습니까? 감사합니다. 내가 행의 ID를 전송하지 않은

+0

'data : ko.toJSON (id) '를'data : ko.toJSON ({id : id})'로 바꾸어보십시오. – nemesv

+0

답장을 보내 주셔서 감사합니다. URL과 함께 ID를 보내지 않았습니다. "색인"작업 방법으로 리디렉션하는 방법에 대한 아이디어가 있습니다. 리디렉션이 발생하지 않습니다. 삭제 된 레코드를 보려면 페이지를 새로 고쳐야합니다. –

답변

0

는 URL을 했어야 URL을 삭제할 "/ 제공// 삭제"+ Provider.ProviderID()가 제대로 작동

그것입니다.

"색인"작업 방법으로의 리디렉션은 일어나지 않지만 삭제 된 레코드를 보려면 페이지를 새로 고쳐야합니다.

모든 안내는 도움이 될 것입니다. 감사합니다.

관련 문제