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를 전송하지 않은
'data : ko.toJSON (id) '를'data : ko.toJSON ({id : id})'로 바꾸어보십시오. – nemesv
답장을 보내 주셔서 감사합니다. URL과 함께 ID를 보내지 않았습니다. "색인"작업 방법으로 리디렉션하는 방법에 대한 아이디어가 있습니다. 리디렉션이 발생하지 않습니다. 삭제 된 레코드를 보려면 페이지를 새로 고쳐야합니다. –