как передать список моделей переменной длины в метод - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь создать веб-сайт, на котором товары с переменным числом вариантов могут быть добавлены в базу данных.

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

<form id="partialform" asp-action="AddNewProduct" asp-route-Category="Skate" enctype="multipart/form-data" style="display:inline-block;width:100%;" data-ajax="true" data-ajax-update="#AppendProductHere" data-ajax-mode="replace">
    <div asp-validation-summary="ModelOnly" class="text-danger"></div>
    <div class="col-md-12" id="appendpartformhere">
        <partial name="AddProductBase" model="new Product()" />

        <div class="col-md-6">
            <partial name="AddCategoryAllBase" model="new CategoryAll()" />

            <div class="form-group">
                <label asp-for="Skate.Use" class="control-label"></label>
                <input asp-for="Skate.Use" class="form-control" id="SkateUse" />
                <span asp-validation-for="Skate.Use" class="text-danger"></span>
            </div>
            //more labels and inputs
        </div>
    </div>
    <partial name="AddVariationSkate" model="new VariationSkate()" />
    <div id="addpartialSkate"></div>
    <div class="form-group">
        <input type="submit" value="Finish" class="btn btn-default" id="FinishAddingVariations" />
    </div>
</form>

частичное для вставки в выше при нажатии кнопки

<div class="allSkates">
    <hr />
    <div class="row">
        <div class="col-md-12">

                <partial name="AddProductItemBase" model="new ProductItems()" />
                <div class="col-md-6">

                    <div class="form-group">
                        <label asp-for="EANCode" class="control-label"></label>
                        <input asp-for="EANCode" class="form-control VariationsOnProduct">
                    </div>
                    <div class="form-group">
                        <label asp-for="Size" class="control-label"></label>
                        <input asp-for="Size" class="form-control" />
                        <span asp-validation-for="Size" class="text-danger"></span>
                    </div>
                </div>
            </div>

                <div class="form-group">
                    <button type="button" name="name" value="Skate" class="addItem">add variation</button>
                </div>
        <div></div>
    </div>
</div>

метод, который я пытаюсь вызвать

public ActionResult AddNewProduct(ListSkates skatelist, string Category, Product NewProduct, CategoryAll NewAll)

класс, который я пытаюсь заполнить скейт-листом, но productitem и вариации скейтов остаются нулевыми, Skate заполняется

public class ListSkates
{
    public CategorySkate Skate { get; set; }
    public IList<ProductItems> productitem { get; set; }
    public IList<VariationSkate> VariationSkates { get; set; }
}

1 Ответ

0 голосов
/ 27 сентября 2019

Как правило, ваши входные данные должны называться как: VariationSkates[N].EANCode, когда N является индексом.Вы можете сделать это вручную различными способами, но это огромная боль и подвержена ошибкам.Лучше всего использовать библиотеку на стороне клиента, которая поддерживает двустороннее связывание моделей, например Angular или Vue.

В общем случае вы создадите шаблон HTML на стороне клиента, который должен отображаться для каждогоVariationSkate экземпляр (т. Е. Поля формы), и затем вы свяжете список VariationSkates (как объект JavaScript) с повторяющимся блоком, который использует этот шаблон.Таким образом, клиентская библиотека будет управлять индексированием и вставкой / удалением HTML.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...