首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何按Razor页面中的另一个列表过滤列表?

在ASP.NET Core的Razor页面中,你可以使用LINQ查询来根据另一个列表过滤列表。以下是一个基本的示例,展示了如何实现这一点。

假设你有两个列表:一个是List<Product>,另一个是List<Category>。你想要根据选定的类别过滤产品列表。

示例代码

首先,定义你的模型类:

代码语言:txt
复制
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页面中,你可以这样使用:

代码语言:txt
复制
@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▼
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券