У меня проблема с приведенным ниже кодом.
@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.