У меня есть gridview в MVC, когда я нажимаю на редактирование, что определенная строка превращается в текстовые поля, но данные не обновляются. данные, которые я изменил, не сохраняются после нажатия на вкладку или ввода предыдущей записи. Что мне нужно изменить для получения моего результата?Данные не сохраняются в базе данных после редактирования - MVC
мой JQuery код:
<script type="text/javascript">
$(document).ready(function() {
$('a.edit').click(function() {
var dad = $(this).parent().parent();
dad.find('.displaytext').hide();
dad.find('input[type="text"]').show();
});
$('input[type=text]').focusout(function() {
var dad = $(this).parent();
$(this).hide();
dad.find('.displaytext').show();
});
});
</script>
мой код контроллера для редактирования
[HttpGet]
public ActionResult Edit(int id = 0)
{
tbl_HolidayList tbl_holidaylist = db.tbl_HolidayList.Find(id);
if (tbl_holidaylist == null)
{
return HttpNotFound();
}
return View(tbl_holidaylist);
}
//
// POST: /Holiday/Edit/5
[HttpPost]
public ActionResult Edit(tbl_HolidayList tbl_holidaylist)
{
if (ModelState.IsValid)
{
db.Entry(tbl_holidaylist).State = EntityState.Modified;
db.SaveChanges();
TempData["Msg"] = "Data has been updated succeessfully";
return RedirectToAction("Index");
}
return View(tbl_holidaylist);
}
HTML код
<table>
<tr>
@* <th>
@Html.Label("ID")
</th>*@
<th>
@Html.Label("Name")
</th>
<th>
@Html.Label("Description")
</th>
<th>
@Html.Label("Date")
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
@* <td>
@Html.TextBoxFor(modelItem => item.Holiday_Id, new { style = "display: none; width:170px; height:15px" })
<div class="displaytext">
@Html.DisplayFor(modelItem => item.Holiday_Id)
</div>
</td>*@
<td>
@Html.TextBoxFor(modelItem => item.Holiday_Name, new { style = "display: none; width:170px; height:15px" })
<div class="displaytext">
@Html.DisplayFor(modelItem => item.Holiday_Name)
</div>
</td>
<td>
@Html.TextBoxFor(modelItem => item.Holiday_Description, new { style = "display: none; width:170px; height:15px" })
<div class="displaytext">
@Html.DisplayFor(modelItem => item.Holiday_Description)
</div>
</td>
<td>
@Html.TextBoxFor(modelItem => item.Holiday_date, new { style = "display: none; width:170px; height:15px" })
<div class="displaytext">
@Html.DisplayFor(modelItem => item.Holiday_date)
</div>
</td>
<td>
<a id="edit" class="edit" href="#">Edit</a> |
@*@Html.ActionLink("Edit", "Edit", new { id = item.Holiday_Id }, new { @class = "lnkEdit" }) |*@
@* @Html.ActionLink("Details", "Details", new { id = item.Holiday_Id}, new { @class = "lnkDetail" }) |*@
@Html.ActionLink("Delete", "Delete", new { id = item.Holiday_Id }, new { @class = "lnkDelete" })
@*<a id="edit" class="edit" href="#">Edit</a> |
@Html.ActionLink("Delete", "Delete", "Holiday")*@
</td>
</tr>
}
</table>
бы помочь, если вы предоставили HTML-разметку для ячейки – charlietfl
Я добавил HTML-код. –
Все, что вы делаете, это отображение текстовых полей и скрытие, когда оно теряет фокус. вы не обновляете текст в строке таблицы, и у вас нет способа сохранения данных в базе данных (без формы или ajax для публикации данных). Также вы создаете недопустимый html (атрибуты дубликата id). –