MVC:表单提交时的刷新列表
本文关键字:刷新 列表 表单提交 MVC | 更新日期: 2023-09-27 18:35:14
我有一个 4 lists
的view model
。让我们称这些列表为动物,汽车,房屋和家具。
这些列表包含 4 种不同类型的预定义搜索结果。在我的view
中,我正在尝试创建一个具有 4 个check boxes
和一个submit button
(每个复选框代表某个列表)的form
。提交表单时,我正在尝试将所选列表合并为一个列表并在视图中表示它们。我已经能够在控制器中连接其中的几个列表并将它们发送到视图模型(然后发送到视图),但无法决定从视图中选择哪些列表。
如果需要代码来详细说明,我也非常愿意提供这个:)
所以我的问题是,我如何确定哪个复选框与哪个列表相关,我将如何继续填写级联列表并相应地更新视图?
关于如何进行的任何指示?感谢您的所有建议。
电流控制器(filterResult
在这里设置为与设备和汽车相连):
public ActionResult Index(ListPage currentPage, int? page)
{
List<ListItem> filterResult = new List<ListItem>();
ListResult allListResult = _searchService.GetPagesByPageType<>();
ListResult carsResult = _searchService.GetPagesByPageType<Cars>();
ListResult furnitureResult = _searchService.GetPagesByPageType<Furniture>();
ListResult housesResult = _searchService.GetPagesByPageType<Houses >();
filterResult = furnitureResult.Items.Concat(carsResult.Items).ToList();
var model = new ListPageViewModel(currentPage)
{
AllPages = allBaseEditorialPagesResult.Items,
TotalMatching = allBaseEditorialPagesResult.TotalMatching,
FilteredPages = filterResult,
TotalFilteredMatching = filterResult.Count()
};
return View(model);
}
简而言之;我想从视图中选择填充过滤器结果的结果。
解决了:
视图:
@using (Html.BeginForm("Index"))
{
<b>Animals</b>@Html.CheckBox("checkAnimals")
<b>Furniture</b>@Html.CheckBox("checkFurniture")
<b>Cars</b>@Html.CheckBox("checkCars")
<b>Houses</b>@Html.CheckBox("checkHouses")
<input type="submit" tabindex="2" class="btn" value="Apply filter" />
}
控制器:
public ActionResult Index(ListPage currentPage, int? page, bool checkAnimals = false, bool checkFurniture= false, bool checkCars= false, bool checkHouses= false)
{
List<ListItem> filterResult = new List<ListItem>();
ListResult allListResult = _searchService.GetPagesByPageType<>();
ListResult carsResult = _searchService.GetPagesByPageType<Cars>();
ListResult furnitureResult = _searchService.GetPagesByPageType<Furniture>();
ListResult housesResult = _searchService.GetPagesByPageType<Houses >();
ListResult animalsResult = _searchService.GetPagesByPageType<Animals>();
if (checkAnimals)
{
filterResult = filterResult.Concat(animalsResult.Items).ToList();
}
if (checkFurniture)
{
filterResult = filterResult.Concat(furnitureResult .Items).ToList();
}
if (checkCars)
{
filterResult = filterResult.Concat(carsResult.Items).ToList();
}
if (checkHouses)
{
filterResult = filterResult.Concat(housesResult.Items).ToList();
}
var model = new ListPageViewModel(currentPage)
{
AllPages = allBaseEditorialPagesResult.Items,
TotalMatching = allBaseEditorialPagesResult.TotalMatching,
FilteredPages = filterResult,
TotalFilteredMatching = filterResult.Count()
};
return View(model);
}