разработчик старой школы на c # здесь. Короче говоря, компания, в которой я работаю, решила продолжить разработку с использованием базовой технологии, и как бывший разработчик winforms я не знаком с концепциями сети и не могу сохранить деталистол к основному столу.Любая помощь очень ценится.
У меня есть две таблицы с отношением «1 ко многим»
TOURNAMENTS_M (Master)
TOURNAMENTS_D (Detail)
Я отредактировал созданную лесом страницу «Создать», включив в нее поля для таблицы сведений для ввода.
Мне даже удалось обновить (визуально) таблицу для добавленных записей сведений с помощью Jquery.
У меня проблемы с сохранением этой информации в моей базе данных, хотя было несколькоразличных учебных пособий, которым я следовал с разными подходами ... но не смог добиться успеха, не используя ни один из подходов ...
1-й Подход использует методы Jquery и Ajax.Я видел примеры, когда люди сохраняют данные через модальное окно, и при нажатии кнопки «Сохранить» данные обновляются в виде таблицы, так что я понял (поправьте меня, если я ошибаюсь). Ajax используется для перезагрузки данных без обновления страницы, иотправить данные на контроллер.В моем случае я не уверен, что это правильный метод для использования, так как основной и дочерний элементы управления находятся на одной странице.
2nd Подход использует только Jquery
в этом подходе мой метод Create в контроллере и методы jquery выглядят следующим образом:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(TOURNAMENTS_M pTournamentsM)
{
if (ModelState.IsValid)
{
_context.Add(pTournamentsM);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(pTournamentsM);
}
function GetCurrentDetail() {
var TD_LEVEL = $("#TD_LEVEL").val();
var TD_SB = $("#TD_SB").val();
var TD_BB = $("#TD_BB").val();
var tourDetail = {
"TD_LEVEL": TD_LEVEL,
"TD_SB": TD_SB,
"TD_BB": TD_BB
};
return tourDetail;
}
// срабатывает при нажатии кнопки добавления детализации функции CreateRowForTourDetails () {
var current = GetCurrentDetail();
var index = $("#detailsTable").children("tr").length;
var indexcell = "<td style='display:none'> <input type='hidden' id='index" + index + "' name='TOURNAMENTS_D.index' value = '" + index + "' /> </td>";
var TD_LEVEL = "<td> <input type='hidden' id='TD_LEVEL" + index + "' name='TOURNAMENTS_D[" + index + "].TD_LEVEL ' value = '" + current.TD_LEVEL + "' />" + current.TD_LEVEL + " </td>";
var TD_SB = "<td> <input type='hidden' id='TD_SB" + index + "' name='TOURNAMENTS_D[" + index + "].TD_SB ' value = '" + current.TD_SB + "' />" + current.TD_SB + " </td>";
var TD_BB = "<td> <input type='hidden' id='TD_BB" + index + "' name='TOURNAMENTS_D[" + index + "].TD_BB ' value = '" + current.TD_BB + "' />" + current.TD_BB + " </td>";
//var removeButton = "<td><a id ='myRemove' data-itemId='0' class='btn btn-primary'>Remove</a></td>";
var tourDetail = "<tr>" +indexcell + +TD_LEVEL + TD_SB + TD_BB + "</tr>";
var detailsTableBody = $("#DetailsTableBody");
detailsTableBody.append(tourDetail);
}
с помощью этого метода, когда я размещаю точку останова внутри функции Create в моем контроллере, я вижу, что счетчик TOURNAMENTS_D увеличивается, но значение равно нулю