Фон
У меня есть веб-приложение ASP.Net Core v2.1, для которого флаг CheckConsentNeeded установлен в значение true при запуске.
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = Microsoft.AspNetCore.Http.SameSiteMode.None;
});
У меня естьформа регистрации на главной странице, которая использует [ValidateAntiForgeryToken] в действии публикации.
выпуск
Если кто-то пытается зарегистрироваться до того, как файлы cookie приняты, ониполучить следующую ошибку:
ERROR - ExceptionHandlerMiddleware - An unhandled exception has occurred while executing the request. System.FormatException: Input string was not in a correct format.
Требование
Я хочу автоматически развернуть панель cookieConsent на мобильном телефоне, пока они не примут файлы cookie, чтобы сделать их более очевиднымисделайте это вместо того, чтобы искать их вручную, нажав на значок гамбургера.
Выполненное действие
Я вижу код в _cookieConsentPartial, который дает мне нужный мне флаг (showBanner):
@{
var consentFeature = Context.Features.Get<ITrackingConsentFeature>();
var showBanner = !consentFeature?.CanTrack ?? false;
var cookieString = consentFeature?.CreateConsentCookie();
}
@if (showBanner)
{
Я надеялся, что смогу добавить сюда некоторый код JQuery, чтобы добавить класс "in" в селектор .navbar-collapse.
$.when($.ready).then(function () {
var $navBar = $(".navbar-collapse");
if (!$navBar.hasClass("in")) {
$navBar.addClass("in");
}
});
Однако 2вещи.
- Я не могу использовать JQuery в кулинарииeConsentPartial, потому что частичное загружено выше, чем файлы сценария.
- Если после загрузки страницы я запускаю сценарий JQuery в консоли, я получаю меню, а не содержимое cookieConsent.Кнопка гамбургера также перестает работать.
Кто-нибудь может предложить лучший способ реализовать это требование в Asp.Net Core 2.1?