Когда я реализую IEnumerable в классе, он не получает данные через API-интерфейс выборки.C#

Место общения программистов C#
Ответить
Anonymous
 Когда я реализую IEnumerable в классе, он не получает данные через API-интерфейс выборки.

Сообщение Anonymous »

Я хочу использовать foreach для списка в C#. Я получаю сообщение об ошибке. Тип «WordStudy.Models.CardList» можно использовать в операторах foreach только в том случае, если он реализует «IEnumerable» или «IEnumerable» или если у него есть подходящий метод «GetEnumerator», тип возвращаемого значения которого имеет Свойство Current и метод MoveNext. Когда я реализовал IEnumerable в своем классе, он становится нулевым.
script.js

Код: Выделить всё

var currentCardNumber = 1;

function addCard() {

currentCardNumber++;
let newCardHTML = `

[h4]${currentCardNumber}[/h4]


Term


Definition 



 `;
let newCard = document.createElement('div');
newCard.classList.add('card');
newCard.classList.add('mt-3');
newCard.innerHTML = newCardHTML;

let addNewCard = document.querySelector('.cards');
let referenceNode = document.getElementById('create-cards');
addNewCard.insertBefore(newCard, referenceNode);

}
function saveCardDataToServer() {
let cards = [];
document.querySelectorAll('.cards > .card   ').forEach((card) => {

let termInput = card.querySelector('input[name="term"]');
let definitionInput = card.querySelector('input[name="definition"]');

if (termInput && definitionInput) {
let term = termInput.value.trim();
let definition = definitionInput.value.trim();
cards.push({
Term: term,
Definition: definition
});
}
else {
console.error("Input elements not found in card:", card);
}
})

fetch('/Cards/Create/', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({Cards: cards})
})
.then(response => response.json())
.then((data => {
if (data.success) {
console.log("Data successfully saved: ", data);
window.location.href = "/Cards/Learning";
} else {
console.error("Error saving card: ", data.message);
}
}))
}
document.addEventListener('DOMContentLoaded', function() {
let newCard = document.querySelector('.new-card');
newCard.addEventListener('click', function() {
addCard();
});
document.querySelector('form.cards').addEventListener('submit', function() {
saveCardDataToServer();
});
});
Просмотр

Код: Выделить всё

@model CardList















Create new module
Создать

Title





[h4]1[/h4]


Term


Definition 








+ Add card







Модели

Код: Выделить всё

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 Cards { get; set; }
}
Модель CardList с реализованным IEnumerable

Код: Выделить всё

public class CardList : IEnumerable
{
public List Cards { get; set; }

public CardList()
{
Cards = new List();
}

public IEnumerator GetEnumerator()
{
return Cards.GetEnumerator();
}

IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
Контроллер. Когда я реализую карты IEnumerable CardList, при создании создается значение null.

Код: Выделить всё

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

public IActionResult Create()
{
return View();
}
[HttpPost]
[Route("Cards/Create/")]
public IActionResult Create([FromBody] CardList cards)

{
if (cards != null)
{
foreach (var card in cards)
{
if (!string.IsNullOrWhiteSpace(card.Term) && !string.IsNullOrWhiteSpace(card.Definition))
{
CardsRepository.AddCard(card);
}

}

return Json(new { success = true, message = "Card saved successfully " });
}

var errors = ModelState.Values.SelectMany(v => v.Errors).Select(e => e.ErrorMessage);
return Json(new { success = false, message = "Validation error", errors = errors });
}
Когда я удаляю карту IEnumerable CardList, получаю данные, однако я не могу использовать foreach.

Подробнее здесь: https://stackoverflow.com/questions/786 ... -fetch-api
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»