В Edit
методе контроллера я не могу успешно проверить и передать детали модели. Но когда я добавляю новую строку, она проверяет и передает значения контроллеру.
Вот пример вывода:
Две записи не проходят и не проверяются, но когда я добавляю новую строку, запись из новой строки проверяется и проходит
Вот мой код для получения существующих деталей
var form = $('form');
$.ajax({
url: '/Journals/EditJournalDetails',
data: {
id: @Model.Id
},
success: function (data) {
$('#journalRow').append('<tr>' + data + '</tr>');
$('tbody#journalRow>tr.checkDetails').appendTo('#checkRow');
form.data('validator', null);
$.validator.unobtrusive.parse(form);
}
});
код для EditJournalDetails
@model IEnumerable<SimplyAccounting.Models.TransactionViewModels.JournalDetailsViewModel>
@using (Html.BeginCollectionItem("JournalDetailsViewModel"))
{
@foreach (var item in Model)
{
//row values here
}
}
Код контроллера:
public async Task<IActionResult> EditJournalDetails(int? id)
{
var journaldetails = await _context.JournalDetails.Where(m => m.JournalId == id).ToListAsync();
var jdvmodel = _mapper.Map<List<JournalDetailsViewModel>>(journaldetails);
foreach(var item in jdvmodel)
{
//retrieve data here
}
return PartialView("_EditJournalDetails", jdvmodel);
}
Добавьте код строки JS:
function GetRow() {
var form = $('form');
$.ajax({
url: '/Journals/CreateJournalDetails',
success: function (data) {
$('#journalRow').append('<tr>' + data + '</tr>');
$('tbody#journalRow>tr.checkDetails').appendTo('#checkRow');
form.data('validator', null);
$.validator.unobtrusive.parse(form);
}
});
}
CreateJournalDetails
код частичного просмотра:
@model SimplyAccounting.Models.TransactionViewModels.JournalDetailsViewModel
@using (Html.BeginCollectionItem("JournalDetailsViewModel"))
{
//row codes here
}
Код контроллера:
public IActionResult CreateJournalDetails(JournalDetailsViewModel vmodel)
{
vmodel = new JournalDetailsViewModel();
//some code here
return PartialView("_CreateJournalDetails", vmodel);
}
EditJournalDetails
код неверен. Вы не помещаете петлю внутрьBeginCollectionItem
. У вас естьforeach
цикл, который вызывает@Html.Partial
, а частичное представление основано на одной модели и имеетBeginCollectionItem
. см. Частичное представление, передающее коллекцию с помощью помощника Html.BeginCollectionItem для получения подробного кода. И почему вы выполняете вызов ajax для получения существующих записей? - person   schedule 11.10.2018