在ASP.NET Core的Razor页面中,你可以使用LINQ查询来根据另一个列表过滤列表。以下是一个基本的示例,展示了如何实现这一点。
假设你有两个列表:一个是List<Product>
,另一个是List<Category>
。你想要根据选定的类别过滤产品列表。
首先,定义你的模型类:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public int CategoryId { get; set; }
}
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
}
在你的Razor页面中,你可以这样使用:
@page
@model YourNamespace.YourModel
<select asp-for="SelectedCategoryId">
<option value="">All</option>
@foreach (var category in Model.Categories)
{
<option value="@category.Id">@category.Name</option>
}
</select>
<ul>
@foreach (var product in Model.FilteredProducts)
{
<li>@product.Name</li>
}
</ul>
@code {
public List<Product> Products { get; set; }
public List<Category> Categories { get; set; }
public int SelectedCategoryId { get; set; }
public List<Product> FilteredProducts { get; set; }
protected override void OnGet()
{
// 假设这里是从数据库或其他数据源加载产品和类别列表
Products = GetProductsFromDataSource();
Categories = GetCategoriesFromDataSource();
// 初始化过滤后的产品列表
FilteredProducts = Products;
}
public void OnPostFilter()
{
if (SelectedCategoryId > 0)
{
FilteredProducts = Products.Where(p => p.CategoryId == SelectedCategoryId).ToList();
}
else
{
FilteredProducts = Products;
}
}
private List<Product> GetProductsFromDataSource()
{
// 实现获取产品列表的逻辑
return new List<Product>();
}
private List<Category> GetCategoriesFrom▼
领取专属 10元无门槛券
手把手带您无忧上云