@using Microsoft.AspNetCore.WebUtilities
@using Microsoft.Extensions.Primitives
@model (List<string> Categories, IReadOnlyCollection<string> SelectedCategories)

<div class="bookmark__categories">
    @foreach (var item in Model.Categories)
    {
        var isActive = Model.SelectedCategories.Contains(item);
        var cssClass = isActive ? "bookmark__category bookmark__category--active" : "bookmark__category";
        
        // Build query string
        var dic = QueryHelpers.ParseQuery(Context.Request.QueryString.Value);
        
        if (isActive)
        {
            if (dic.ContainsKey("categories"))
            {
                var removeValues = dic["categories"].Where(x => x != item).ToArray();
                if (removeValues.Any())
                {
                    dic["categories"] = new StringValues(removeValues);
                }
                else
                {
                    dic.Remove("categories");
                }
            }
        }
        else
        {
            if (!dic.TryAdd("categories", item))
            {
                var parameters = dic["categories"].ToList();
                parameters.Add(item);
                dic["categories"] = parameters.ToArray();
            }
        }

        dic.Remove("_pjax");

        var url = QueryHelpers.AddQueryString(Context.Request.Path, dic);
        
        <a href="@url" class="@cssClass" data-pjax>@item</a>
    }
</div>
评论加载中...