Nano Hash - криптовалюты, майнинг, программирование

Отправьте массив объектов из представления в контроллер в ядре asp.net

Моя проблема следующая. У меня есть класс, назовем его MyModel. Он содержит список предметов,

public class MyModel
{
    public int Value { get; set; }
    public string Identity { get; set; }
    public List<Item> Items { get; set; }
}

public class Item
{
    public string Name { get; set; }
    public string Description { get; set; }
}

Что я хочу сделать, так это создать представление (форму) в .cshtml и опубликовать результат в контроллере. Я знаю, как это сделать для модели, где у меня есть только строки или числа, но как мне это сделать, когда я хочу, чтобы пользователь чтобы ввести значение, идентификатор, а затем список с элементом. Таким образом, пользователь должен ввести
значение, идентификатор и (много раз) элемент.

Любое предложение, как это сделать? Я не видел ни одного примера с этим, поэтому я спрашиваю.


Ответы:


1

Для публикации массива объектов из представления в контроллер вы можете обратиться к следующей демонстрации:

Вид

@model Demo3.Models.MyModels.MyModel

<div class="row">
 <div class="col-md-4">
    <form asp-action="CreateModel">
        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
        <div class="form-group">
            <label asp-for="Value" class="control-label"></label>
            <input asp-for="Value" class="form-control" />
            <span asp-validation-for="Value" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label asp-for="Identity" class="control-label"></label>
            <input asp-for="Identity" class="form-control" />
            <span asp-validation-for="Identity" class="text-danger"></span>
        </div>
        <div class="form-group">
            <table id="myRows" class="table">
                <tr class="myrow">
                    <td class="section table-column-center">
                        <label asp-for="Items[0].Name" class="control-label"></label>
                        <input asp-for="Items[0].Name" class="form-control" />
                        <span asp-validation-for="Items[0].Name" class="text-danger"></span>
                    </td>
                    <td class="section table-column-center">
                        <label asp-for="Items[0].Description" class="control-label"></label>
                        <input asp-for="Items[0].Description" class="form-control" />
                        <span asp-validation-for="Items[0].Description" class="text-danger"></span>
                    </td>
                </tr>

            </table>
        </div>
        <div class="item-add">
            <a id="add-row" class="link-button">Add Row</a>
        </div>
        <br/>
        <div class="form-group">
            <input type="submit" value="Create" class="btn btn-primary" />
        </div>
    </form>
 </div>
</div>

@section Scripts
{
<script>
$("#add-row").click(function () {
        var nextId = $(".myrow").length;

        var rowHtml = '<tr class="myrow">' +
            '<td class="section table-column-center" >' +
            '<input class="form-control" type="text" id="Items_' + nextId + '_Name" name="Items[' + nextId + '].Name" value=""/>' +

            '<span class="text-danger field-validation-valid" data-valmsg-for="Items[' + nextId + '].Name" data-valmsg-replace="true"></span>' +

            '</td>' +

            '<td class="section table-column-center">' +
            '<input class="form-control" type="text" id="Items_' + nextId + '_Description" name="Items[' + nextId + '].Description" value=""/>' +

            '<span class="text-danger field-validation-valid" data-valmsg-for="Items[' + nextId + '].Description" data-valmsg-replace="true"></span>' +

            '</td>'+

            '</tr>';

        $("#myRows").append(rowHtml);
    });
 </script>
 }

Контроллер

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

    [HttpPost]
    public IActionResult  CreateModel(MyModel model)
    {
        return Json(model);
    }

Результат введите здесь описание изображения

28.04.2020
  • Рад помочь вам решить проблему, не могли бы вы отметить мой ответ как ответ? Это поможет другим людям, столкнувшимся с той же или похожей проблемой, быстро найти ответ. Большое спасибо! 02.05.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..