Как отправить несколько вариантов списка с нативными (не ASP) HTML-разметками? - PullRequest
0 голосов
/ 19 декабря 2018

У меня сгенерированный Razor список выбора с включенной опцией множественного выбора

Я борюсь с отправкой, потому что в контроллере мой Cars список пуст, ноль.

<select multiple class="form-control">
@if (Model != null)
{
    for (int i = 0; i < Model.CarsModels.Count(); i++)
    {
        var car = Model.CarsModels[i];
        if (...)
        {
            <option name="Manufacturer.Cars[@i].Name" value="@car" selected>@car</option>
        }
        else
        {
            <option name="Manufacturer.Cars[@i].Name" value="@car">@car</option>
        }
    }
}
</select>

public class Car
{
    public string Name { get; set; }
}

public class Manufacturer
{
    public List<Car> Cars { get; set; } = new List<Car>();
}

Model.CarsModels = просто список строк.


Между тем, это работает правильно, но это поле ввода, а не опция выбора списка:

<input name="Manufacturer.Cars[0].Name" class="form-control" value="default"/>

1 Ответ

0 голосов
/ 20 декабря 2018

Обычно, когда у вас есть выбор, вы хотите передать значение выбранной опции в серверную часть.Другими словами, все, что вы хотите передать - это unique value of the option (например, идентификатор, имя, код и т. Д.), А не complex object itself.

. Итак, чтобы ваш код работал, вам нужноиметь что-то вроде:

public class ManufacturerViewModel
{
    public List<string> Cars { get; set; }
}

Вид:

<select name="Cars" multiple class="form-control">
   @if (Model != null)
   {
       for (int i = 0; i < Model.CarsModels.Count(); i++)
       {
           var car = Model.CarsModels[i];
           if (...)
           {
             <option value="@car" selected>@car</option>
           }
           else
           {
              <option value="@car">@car</option>
           }
       }
   }
</select>
...