Модель модели ядра ядра Asp Net не проверяет и передает значения в контроллер - PullRequest
0 голосов
/ 11 октября 2018

В методе контроллера Edit я не могу успешно проверить и передать детали модели.Но когда я добавляю новую строку, она проверяет и передает свои значения в контроллер.

Вот пример вывода:

enter image description here

Две записи не проходят и не проверяются, но когда я добавляю новую строку, запись из новой строки проверяется и проходит

enter image description here

Вот мой код дляполучение существующих данных

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);
    }

1 Ответ

0 голосов
/ 12 октября 2018

Решите проблемы, используя этот код

Просмотр

<tbody id="journalRow">
                                        @foreach(var item in Model.JournalDetailsViewModel)
                                        {
                                            @Html.Partial("_JournalDetails", item)
                                        }
                                    </tbody>

PartialView

  @model SimplyAccounting.Models.TransactionViewModels.JournalDetailsViewModel
@using (Html.BeginCollectionItem("JournalDetailsViewModel"))
{
    <tr class="checkDetails" id="@Model.Guid">
        <td>
}
}
...