Я провел много исследований по этому вопросу. Я не могу найти ничего, что действительно соответствует моей ситуации. Я новый программист. Я работаю над улучшением работы с JavaScript, но это мое слабое место.
У меня есть две базы данных - сотрудники и перерывы. Я приложил картинку, чтобы сделать это более понятным:
Список прерываний из базы данных - это список, который вы видите в таблице на рисунке. Раскрывающийся список диспетчера содержит все имена сотрудников. Удалите имя, нажмите «Отправить» - оно добавится в базу данных и отобразится здесь. Отлично работает.
Теперь я пытаюсь использовать @ Html .ActionLink, чтобы сделать имена кликабельными. Для этого нужно запустить еще одно событие JavaScript, чтобы ввести DateTime.Now в поле TimeCleared, чтобы по существу удалить разрыв из списка.
Я делаю что-то не так, хотя (или многое неправильно). Либо это не обновляет базу данных и отметку времени, что поле TimeCleared, я получаю «Этот запрос был заблокирован, потому что конфиденциальная информация может быть раскрыта сторонним веб-сайтам, когда она используется в запросе GET. Чтобы разрешить запросы GET, установите для JsonRequestBehavior значение AllowGet. " ошибка или другие ошибки, основанные на том, что я пытаюсь.
Часть представления:
<div class="container_lists">
<div class="container_break col-md-6">
@*start the break list table*@
<h5 style="text-align:center">Break List</h5>
<table class="table-bordered col-lg-12">
@*populate the table with only those breaks that lack a TimeCleared value*@
@if (Model != null)
{
foreach (var item in Model)
{
if (item.TimeCleared == null)
{
<tr>
@*Make each name clickable to fire JavaScript which activates ActionResult DeleteBreak*@
<td class="breakIdNumber">
@Html.ActionLink(item.DisplayName, "DeleteBreak", new { id = item.BreakId }, new { onclick = "return confirm('Remove from the break list?');" })
</td>
</tr>
}
}
}
</table>
Часть контроллера:
public ActionResult DeleteBreak(BreakModels breakmodels)
{
try
{
breakmodels.TimeCleared = DateTime.Now;
db.SaveChanges();
return Json(new { success = true});
}
catch (Exception ex)
{
return Json(new { success = false});
}
}
Ajax:
@*Activate the DeleteBreak ActionResult*@
<script>
$(document).ready(function () {
$("#RemoveBreak").click(function () {
var model = {};
model.BreakId = Number($("#breakIdNumber").val());
console.log("model", model);
$.ajax({
type: "POST",
url: "/Home/DeleteBreak",
dataType: 'json',
data: JSON.stringify(model),
contentType: "application/json; charset=utf-8",
success: function (data) {
if (data.success)
window.location.href = "/Home/Index";
else
alert("Something went wrong");
},
error: function () {
alert("Something went wrong");
}
});
});
});
</script>