Вот как я это сделал в Asp.Net Core, сначала назначьте параметры строки запроса для ViewBags в вашем контроллере:
[HttpGet("/[controller]/[action]/{categoryId?}/{contractTypeId?}/{locationId?}")]
public IActionResult Index(Guid categoryId, int contractTypeId, Guid locationId)
{
ViewBag.CategoryId = categoryId;
ViewBag.ContractTypeId = contractTypeId;
ViewBag.LocationId = locationId;
...
}
Затем передайте значения вашим ссылкам следующим образом:
<a asp-action="Index" asp-controller="Jobs"
asp-route-categoryId="@teachingCategory.Id"
asp-route-contractTypeId="@ViewBag.ContractTypeId"
asp-route-locationId="@ViewBag.LocationId">
@teachingCategory.Description (@teachingCategory.Rank)
</a>
<a asp-action="Index" asp-controller="Jobs"
asp-route-categoryId="@ViewBag.CategoryId"
asp-route-contractTypeId="@typeOfEmployment.Id"
asp-route-locationId="@ViewBag.LocationId">
@typeOfEmployment.Name
</a>
<a asp-action="Index" asp-controller="Jobs"
asp-route-categoryId="@ViewBag.CategoryId"
asp-route-contractTypeId="@ViewBag.ContractTypeId"
asp-route-locationId="@item.Id">
@item.Id
</a>
Обратите внимание, что каждая ссылка сохраняет свое собственное фактическое значение и передает остальные значения маршрута через то, что мы передали ViewBag.