Как вернуть значение / значения из выпадающего списка, используя select2 в asp.net? - PullRequest
0 голосов
/ 06 мая 2019

В настоящее время я изучаю разработку фронт-эндов на asp.net, и мне, кажется, не хватает фундаментального понимания, когда речь идет, в частности, о выпадающих списках.Моя цель состоит в том, что я считаю очень простым и понятным - создать выпадающий список Select2 с множественным выбором, который отправляет обратно значения выбранных элементов списка выбора.

По некоторым причинамЯ просто не могу понять, как это сделать, несмотря на чтение документов MS и аналогичных вопросов StackOverflow.Я могу создать выпадающий список, выбрать элементы и даже вернуть одно значение.Но я не могу получить значение item / s перед отправкой (для обработки js), чтобы я мог вернуть список (или объединенную строку) всех выбранных значений.

Мой код ниже, вы можетесм. в javascript, который я пытался получить доступ к значению / значениям по-разному, но значение даже не устанавливается на li в элементе inspect.

Было бы замечательно, если бы кто-то мог объяснить, какправильно сформировать этот выпадающий список, чтобы я мог получить нужные мне значения (80 или 81).

Контроллер

public ActionResult About()
        {
            AboutViewModel viewModel = new AboutViewModel();

            viewModel.Movies = new List<SelectListItem>()
            {
                new SelectListItem()
                {
                    Text = "Honey I Shrunk The Kids",
                    Value = "80"
                },
                new SelectListItem()
                {
                    Text = "Shrek 2",
                    Value = "81"
                }
            };
            return View(AboutViewPage, viewModel);
        }

[HttpPost]
public ActionResult About(AboutViewModel viewModel)
{
    return View();
}


Просмотр

   <div>
        @using (Html.BeginForm("About", "Home"))
        {

            @Html.DropDownList("Result", new SelectList(Model.Movies, "Value","Text"), new { @class = "values js-example-basic-single", @multiple = "multiple", @Id="movies" });

            <input type="submit" value="Submit" class="submit" onclick="collectMovies();" />
        }

    </div>



    <script>
        function collectMovies() {
            var test1= $('.select2-selection__choice').val();
            var testString = "";

            for (var i = 0; i < test1.length; i++) {
                testString += test1[i];
            }
        }


        $(document).ready(function () {
            $('.js-example-basic-single').select2();
        });
    </script>

1 Ответ

0 голосов
/ 08 мая 2019

Когда на сервер отправляется элемент множественного выбора, коллекция выбранных значений обрабатывается ASP.NET в список через запятую.Система связывания моделей MVC довольно счастливо видит эту коллекцию в виде массива.Если выбранные значения можно разбить на целые числа, вы можете использовать массив int для представления опубликованных значений

public class AboutViewModel 
{
   public int[] Result {get;set;}
}

[HttpPost]
public ActionResult About(AboutViewModel viewModel)
{
    return View();
}

Source

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