Запись данных в модель через html добавленный с помощью (JS, ASP NET)

Динамически создаю новую карточку и записываю в Term и Definition данные. В модель записываются данные только из первой карточки.

Js файл

var currentCardNumber = 1;
function addCard() {
    currentCardNumber++;
    let newCardHTML = `
                    <div class="header d-flex justify-content-between p-3">
                        <h4 class="card-counter">${currentCardNumber}</h4>
                        <!--<img src="~/img/trash.svg" class="remove-card  img-fluid" height="40px" width="35px" alt="удалить карточку">-->
                    </div>
                    <div class="card-body row">
                        <div class="term col">
                            <h3>Термин</h3>
                            <input class="form-control w-100" asp-for="Cards[${currentCardNumber-1}].Term" name = "Cards[${currentCardNumber-1}].Term" placeholder="Введите термин">
                        </div>
                        <div class="definition col">
                            <h3>Определение</h3>
                            <input class="form-control w-100" asp-for="Cards[${currentCardNumber-1}].Definition" name = "Cards[${currentCardNumber-1}].Definition" placeholder="Введите определение">
                        </div>
                      
                    </div>
            `;
    let newCard = document.createElement('div');
    newCard.classList.add('card');
    newCard.classList.add('mt-3');
    newCard.innerHTML = newCardHTML;

    const binUrl = "/img/trash.svg";
    var img = new Image();
    img.classList.add("bin");
    img.classList.add("img-fluid");
    img.src = binUrl;

    let addImg = newCard.querySelector('.header');
    addImg.appendChild(img);

    let addNewCard = document.querySelector('.new-card');
    let referenceNode = document.getElementById('create-cards');
    addNewCard.insertBefore(newCard, referenceNode);
    saveCardsHTML();
    /*saveCardDataToServer(cardData);*/
    updateCounter();
    
}

View

@model CardList
<body>

<main class="main">


    <div class="container">
        <div class="new-module d-flex justify-content-between mt-5">
            <h1>Создать новый модуль</h1>
            <a class="btn btn-primary" asp-controller="Cards" asp-action="learning" type="submit">Создать</a>
        </div>

        <div class="card mt-5 p-2 pb-3">
            <h3>Название</h3>
            <input class="form-control w-100" placeholder="Введите название">
        </div>

        <form asp-controller="Cards" asp-action="Create" method="post" class="cards">
            <div class="card mt-6">
                <div class="header d-flex justify-content-between p-3">
                    <h4 class="card-counter">1</h4>
                    <img src="~/img/trash.svg" class="remove-card  img-fluid" height="40px" width="35px" alt="удалить карточку">
                </div>
                <div class="card-body row">
                    <div class="term col">
                        <h3>Термин</h3>
                        <input class="form-control w-100" asp-for="Cards[0].Term" name="Cards[0].Term" placeholder="Введите термин">
                    </div>
                    <div class="definition col">
                        <h3>Определение</h3>
                        <input class="form-control w-100" asp-for="Cards[0].Definition" name="Cards[0].Definition" placeholder="Введите определение">
                    </div>
                </div>
            </div>

            <input type="submit" value="Создать" id="create-cards" class="btn btn-primary mt-2"/>
        </form>
        <button class="new-card w-100 d-flex justify-content-center align-items-center mt-4 mt-s rounded-2" style="height: 5rem" onclick="addCard()" type="button">
            <h3>+ Добавить карточку</h3>
        </button>

    </div>

</main>
<script >
        window.onload = function (){restoreCardsHTML();};
        window.onbeforeunload = function (){ saveCardsHTML();};
    </script>
</body>

Модель

public class Card
{
    public int CardId { get; set; }
    [Required]
    public string Term { get; set; } = string.Empty;
    public string Definition { get; set; } = string.Empty;
}

public class CardList
{
    public List<Card> Cards { get; set; }
}

Контроллер

public class CardsController : Controller
{
    [HttpGet]
    public IActionResult Learning()
    {
        var cards = CardsRepository.GetCards();
        return View(cards);
    }

    public IActionResult Create()
    {
        return View();
    }


    [HttpPost]
    public IActionResult Create(CardList model)
    {
        if (ModelState.IsValid)
        {
            foreach (var card in model.Cards)
            {
                CardsRepository.AddCard(card);
            }

            return RedirectToAction(nameof(Learning));
        }

        return View(model);
    }
}

При добавлении второй карточки в HTML напрямую данные отображаются с двух карточек.


Ответы (0 шт):