Потеря полной модели при публикации значений Ajax на контроллере - PullRequest
0 голосов
/ 21 ноября 2018

То, что я хочу сделать, это иметь 2 списка (слева, справа), где слева будут все объекты продуктов, кроме тех, которые присутствуют в моем Контрактном объекте, а справа - продукты в моем Контрактном объекте.

У меня возникла проблема, заключающаяся в том, что, когда я передаю 1 параметр (строку), я могу правильно получить их в моем контроллере, но всякий раз, когда я передаю свою модель с ним в качестве второго параметра, я полностью теряю свою модель.Вот что у меня есть:

Контроллер:

public ActionResult EditContract(ContractViewModel model, string selectedProducts)

Просмотр (Javascript / JQuery):

  function GetSelectedProducts() {

        var listbox = document.getElementById("productsForContractListbox");
        var txt = "";
        var i;

        for (i = 0; i < listbox.length; i++) {
            txt = txt + "\n" + listbox.options[i].text;
        }

        $('#SelectedProductForContracts').val(txt);
        var selectedProducts = $('#SelectedProductForContracts').val();

        var model = $('form').serialize;

        $.post('@Url.Action("EditContract", "Contract")', { "model": model, "selectedProducts": selectedProducts});
    }           

Списки вспомогательных Html:

// listbox for my contract products
@Html.ListBoxFor(c => c.Contract.Products, productsForContract, new { ID = "productsForContractListbox", @class = "form-control" })

// listbox where all products except the ones in my contract are loaded
@Html.ListBox("allProducts", allProducts, new { ID = "allProductsListbox", @class = "form-control" })

Скрыто для SelectedProductForContracts от моей модели:

@Html.HiddenFor(c => c.SelectedProductForContracts, new { ID = "SelectedProductForContracts", name = "SelectedProductForContracts" })

Модель:

[HiddenInput(DisplayValue = false)]
public List<SelectListItem> SelectedProductForContracts { get; set; }

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

Я пробовал несколько вещей, таких как THIS , но не смог заставить их работать в моем случае (возможно, я делаю что-то неправильноно не знаю, что ...)

Может кто-нибудь помочь мне в правильном пути достижения этой цели, я вижу много способов, но я надеюсь, что должен быть элегантный способ привязать все к одной модели без необходимостииспользовать javascript / Jquery?

С уважением!

1 Ответ

0 голосов
/ 22 ноября 2018

List<SelectListItem> невозможно определить в одной скрытой переменной

...