Helpers - компьютеры, интернет, программирование

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

сначала я создаю список моделей в действии [HttpGet] и возвращаюсь к просмотру.

public ActionResult Setting()
{
        var model = db.Settings.ToList();
        return View(model);
}

их в поле зрения получить список в поле зрения и показать хорошо. но после редактирования значения параметра я хочу передать список объектов из представления в контроллер, это не работает.

@model List<TajerWebsite.Models.Setting>
<!-- Main content -->
<section class="content">
    <div class="container-fluid">
        <div class="row">
            <!-- left column -->
            <div class="col-md-6">
                <!-- general form elements -->
                <div class="card card-primary">
                    <div class="card-header">
                        <h3 class="card-title">تنظیمات</h3>
                    </div>
                    <!-- /.card-header -->
                    <!-- form start -->
                    @using (Html.BeginForm("Setting","Admin", new { FormMethod.Post }))
                    {

                        @Html.AntiForgeryToken()
                        foreach (var item in Model)
                        {
                            <div class="card-body">
                                <div class="form-group">
                                    @Html.HiddenFor(model => item.Id)
                                    <label for="exampleInputPassword1">@item.Name</label>
                                    @Html.EditorFor(model => item.Value, new { htmlAttributes = new { @class = "form-control"} })
                                    @Html.ValidationMessageFor(model => item.Value, "", new { @class = "text-danger" })
                                </div>

                            </div>
                        }

                        <!-- /.card-body -->

                        <div class="card-footer">
                            <button type="submit" class="btn btn-primary">ذخیره</button>

                        </div>
                    }
                </div>
            </div>
        </div>
    </div>
</section>

и действие:

[HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Setting(IEnumerable<Models.Setting> settings)
    {
        db.Entry(settings);
        db.SaveChanges();
        return View(settings);
    }

но настройки нулевые!


Ответы:


1

Вы не можете использовать цикл @foreach в представлении, чтобы передать список объектов обратно в контроллер, потому что это приведет к созданию элементов ввода с одинаковыми идентификаторами и именами.

Вместо этого используйте стандартный цикл for:

for(int i = 0; i < Model.Count; i++)
{
    <div class="card-body">
        <div class="form-group">
            @Html.HiddenFor(m => m[i].Id)
            <label for="exampleInputPassword1">@Model[i].Name</label>
            @Html.EditorFor(m => m[i].Value, 
                new { htmlAttributes = new { @class = "form-control"} })
            @Html.ValidationMessageFor(m => m[i].Value, 
                new { @class = "text-danger" })
        </div>
    </div>
}
17.09.2020
  • спасибо! но @Model[i].Name ИЛИ @Html.DisplayFor(m =› m[i].Name) не отправляет значение! 17.09.2020
  • Вы не указали имя во входных данных (в настоящее время оно у вас есть в метке), поэтому я подумал, что вам не нужно возвращать его на сервер. Если вы хотите сохранить и имя, просто поместите его в скрытый ввод. Помните, чтобы отправить данные обратно на сервер, они должны быть на входе! 17.09.2020
  • Новые материалы

    Интуитивное понимание тензоров в машинном обучении
    Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

    Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
    Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

    Почему объяснимость так важна прямо сейчас?
    По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

    Анимированный математический анализ
    Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

    Создание простого слайдера изображений с помощью JavaScript
    Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

    Создание базы данных с помощью супергероя «Python»
    В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

    ИИ для чайников: руководство для начинающих по пониманию будущего технологий
    Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..