@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>
评论加载中...