@ Html .DropDownList не перерисовывается при изменении выбранного значения - PullRequest
0 голосов
/ 08 мая 2020

У меня проблема с приведенным ниже кодом.

@model ShoeFormViewModel
        @using (Html.BeginForm("ToDo", "shoecontroller", FormMethod.Post, new { id = "ShoesForm" }))
        {
<th>
//1: Drop down the list I'm using to test this drop-down list 2 and 3 should reflect the state of this dropdown.
                <td>
                    @Html.LabelFor(model => model.Shoes.First().Name, htmlAttributes: new { @class = "h7 alert-link" })
                    @Html.DropDownList("SelectedShoeId",
                        new SelectList((IEnumerable<ShoeModel>)Model.Shoes, "Id", "Name", Model.Options.SelectedShoeId),
                        new { @class = "dropleft", onchange = "document.getElementById('ShoesForm').submit();" })
                </td>
                <td>
//2: this doe's not reflect 1's state but should.      
                    @Html.DropDownList("SelectedShoesId",
                   new SelectList((IEnumerable<ShoeModel>)Model.Shoes, "Id", "Name", Model.Options.SelectedShoeId),
                                              new { @class = "dropleft", onchange = "document.getElementById('ShoesForm').submit();" })


//3: This Reflects 1's state. 
                    @Html.DropDownList("SelectedShoeId2",
new SelectList((IEnumerable<ShoeModel>)Model.Shoes, "Id", "Name", Model.Options.SelectedShoeId),
new { @class = "dropleft", onchange = "document.getElementById('ShoesForm').submit();" })

                </td>
</th>
}

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

Я попытался изменить строку выражения в начале второго раскрывающегося списка, в результате в раскрывающемся списке отображается выбранное значение, однако «SelectedShoesId» - это свойство, которое мне нужно, чтобы этот список выбора обновлялся. в модели.

Заранее благодарим вас за любую помощь.

Изменить:

Модель представления выглядит так:

public class ShoeFormViewModel
    {
        public FilterPageOptions Options { get; set; }
        public IEnumerable<ShoeModel> Shoes { get; set; }
    }

Модель обуви выглядит как

    public class ShoeModel
    {
        public int Id { get; set; }

        [Display(Name = "Shoe")]
        public string Name { get; set; }

        public bool? IsActive { get;set; }
    }

FilterPageOptions был упрощен до

 public class FilterPageOptions 
    {
        public int? SelectedShoeId { get; set; } = 1;
    }

Контроллер был упрощен до:

 public async Task<IActionResult> ToDo(FilterPageOptions options)
        {
            var model = new ShoeFormViewModel();

            model.Options = options;

            model.Shoes = await shoeService.GetShoesAsync();

            return View(model);
        }

И все же выпадающий список 2 все еще не отражает 1 и 3.

...