Я делаю веб-страницу внутри сетевого приложения MVC, где пользователь добавляет мебель в свою комнату. На странице используется цикл foreach для создания таблеток navtrap, которые содержат внутри видовые компоненты. Компоненты представления фильтруются по типу мебели (перечисление внутри модели мебели), чтобы получить простой список мебели указанного типа
<ul class="nav nav-pills">
@foreach (Furniture.FurnitureType FurType in (Namjestaj.FurnitureType [])Enum.GetValues(typeof(Furniture.FurnitureType )))
{
<li><a data-toggle="pill" href="#@(FurType )">@(FurType )</a></li>
}
</ul>
@foreach (Furniture.FurnitureType FurType in (Namjestaj.FurnitureType [])Enum.GetValues(typeof(Furniture.FurnitureType )))
{
<div id="@(FurnitureType )" class="tab-pane fade">
<p>@(FurnitureType )</p>
@await Component.InvokeAsync("RoomFurniture", new { id = Model.Id, FurnitureType= FurType , free= true })
</div>
}
// код видового компонента
public IViewComponentResult Invoke(int id, Furniture.FurnitureType typ, bool free)
{
List<Furniture> furniture= db.Furniture.Where(x => x.FurnitureType == typ).ToList();
return View("RoomFurniture", furniture);
}
Viewcomponent возвращает результат, но он всегда возвращает один и тот же результат. Из всех типов мебели ("диван", "кровать", "стол" ...) он возвращает только кровати в каждой пилюле. Я даже пытался жестко закодировать другой тип, но только продолжает возвращать кровати. Внутри отладчика цикл foreach выполняет правильные итерации, а внутри страницы бритвы Viewcoponent получает правильное значение перечисления, но функция invokeAsync по-прежнему остается на «кровати».