script
function startEdit(obj) {
$(".inline-view").show();
$(".inline-edit").hide();
$(obj).closest('tr').find("td .inline-view").hide();
$(obj).closest('tr').find("td .inline-edit").show();
$("#customerGrid_wrapper").css("overflow-x", "auto");
}
$(function () {
$(".savebutton").click(function () {
// alert("Im Here");
$(".inline-edit").hide();
$(".inline-view").show();
var tr = $(this).closest('tr').find("td .inline_edit");
var FirstName = tr.find("item_FirstName").val();
var MiddleName = tr.find("item_MiddleName").val();
var LastName = tr.find("item_LastName").val();
var Gender = tr.find("item_Gender").val();
var CompanyName = tr.find("item.CompanyName").val();
var Address = tr.find("item_Address").val();
var City = tr.find("item_City").val();
var Country = tr.find("item_Country").val();
var Email = tr.find("item_Email").val();
var Phone = tr.find("item_Phone").val();
var CustomerId = $(this).data("customerid");
$(this).closest('tr').find("td .first_name").text("FirstName");
$(this).closest('tr').find("td .middle_name").text("MiddleName");
$(this).closest('tr').find("td .last_name").text("LastName");
$(this).closest('tr').find("td .gender").text("Gender");
$(this).closest('tr').find("td .company_name").text("CompanyName");
$(this).closest('tr').find("td .address").text("Address");
$(this).closest('tr').find("td .city").text("City");
$(this).closest('tr').find("td .country").text("Country");
$(this).closest('tr').find("td .email").text("Email");
$(this).closest('tr').find("td .phone").text("Phone");
var CustomerModel = {
CustomerId: CustomerId,
FirstName: FirstName,
MiddleName: MiddleName,
LastName: LastName,
Gender: Gender,
CompanyName: CompanyName,
Address: Address,
City: City,
Country: Country,
Email: Email,
Phone: Phone
};
$.ajax({
url: '/Customers/Edit/',
dataType: "json",
data: JSON.stringify(CustomerModel),
type: 'POST',
contentType: 'application/json; charset=utf-8',
success: function (data, status) {
console.log('Updating data is successful');
},
error: function (e,s,t) {
console.log(t.getMessage);
}
});
});
});
Вид
<table id="customerGrid" class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.CustomerId)
</th>
<th>
@Html.DisplayNameFor(model => model.FirstName)
</th>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.HiddenFor(modelItem => item.CustomerId)
</td>
<td>
<div class="inline-view first_name">
@Html.DisplayFor(modelItem => item.FirstName)
</div>
<div class="inline-edit" style='display:none;'>
@Html.EditorFor(modelItem => item.FirstName)
</div>
</td>
}
<td>
<div class="inline-view">
<button type="button" class="editBtn" onclick='startEdit(this);'>Edit</button>
</div>
<div class="inline-edit" style="display:none;">
<input class="savebutton" id="saveBtn" type="button" value="Save" data-customerid="@item.CustomerId" />
<button type="button" id="cancelBtn" onclick='cancelEdit(); return false;'>Cancel</button>
</div>
</td>
Контроллер
[HttpPost]
public ActionResult Edit(Customers model)
{
try
{
CustomerActions customer = new CustomerActions();
if(ModelState.IsValid)
{
bool isSuccess = customer.UpdateCustomer(model);
if(isSuccess)
{
ViewBag.Message = "Updated successfully.";
}
else
{
ViewBag.Message = "Not updated successfully.";
}
customer.FetchCutomers();
}
return Json(new { customer }, JsonRequestBehavior.AllowGet);
}
catch
{
return View();
}
}
Я использую данные клиента для выполнения действий редактирования / удаления. Когда я пытаюсь обновить данные, переменная привязывается к таблице, и она не может go изменить метод в контроллере. Я прикрепил изображения, чтобы понять, с чем я борюсь. Может кто-нибудь объяснить, почему это происходит, и как это исправить, пожалуйста? Спасибо.