Обновление Cookie для удаления элемента C # - PullRequest
0 голосов
/ 27 сентября 2018

Я создаю внутренний сайт для моей компании, моя целевая страница состоит из плиток, которые представляют собой смесь обязательных и дополнительных плиток.Список плиток и их соответствующий порядок сохраняются в файле cookie в виде строки JSON.Я создаю cookie очень хорошо, я могу обновлять его каждый раз, когда заказ меняется без проблем.Я выдаю, когда они у меня нажимают на кнопку удаления на дополнительной плитке.Он не удалит его из cookie.

Вот код в парциальном коде для запроса ajax:

@Ajax.ActionLink(" ", "RemoveTile", "Home", new { id = "_EventsTile" }, new AjaxOptions { OnSuccess= "$(this).closest('.tilePartial').remove(); location.reload();" }, new { @class = "fas fa-clickable fa-window-close removeTile", @style = "color:red; font-size:1.5em; padding-top:1%" })

Вот код действия в контроллере:

private void UpdateCookie(object obj, string cookieName, int expiredays = 30)
        {

            HttpCookie cookie = new HttpCookie(cookieName);
            cookie.Value = JsonConvert.SerializeObject(obj);
            cookie.Expires = DateTime.Now.AddDays(expiredays);
            Response.SetCookie(cookie);
            Response.Cookies.Add(cookie);
        }

        public void RemoveTile(string id)
        {
            List<TileInfo> newCookie = new List<TileInfo>();
            var cookieInfo = JsonConvert.DeserializeObject<List<TileInfo>>(Request.Cookies["TilePreferences"].Value);

            var removed = cookieInfo.FirstOrDefault(f => f.PartialName == id);
            cookieInfo.Remove(removed);
            //newCookie = cookieInfo;
            UpdateCookie(cookieInfo, "TilePreferences", 90);

            Response.StatusCode = 200;

        }

и значение по умолчанию и то, что «должно» выглядеть, когда это будет сделано:

До:

[
    {"PartialName":"_BulletinBoardTile","TileOrder":0},
    {"PartialName":"_TimeCardTile","TileOrder":1},
    {"PartialName":"_FeedbackTile","TileOrder":2},
    {"PartialName":"_CouncilTile","TileOrder":3},
    {"PartialName":"_EventsTile","TileOrder":4}
]

После (намерение):

[
    {"PartialName":"_BulletinBoardTile","TileOrder":0},
    {"PartialName":"_TimeCardTile","TileOrder":1},
    {"PartialName":"_FeedbackTile","TileOrder":2},
    {"PartialName":"_CouncilTile","TileOrder":3}
}

приветствуется любая помощь.

Этот код для обновления порядка в файле работает без проблем:

public void UpdateTileOrder(string jsonString)
        {
            List<string> TileList = JsonConvert.DeserializeObject<List<string>>(jsonString);
            var cookieInfo = new List<TileInfo>();
            var i = 0;

            foreach (var item in TileList)
            {
                if (!string.IsNullOrWhiteSpace(item))
                {
                    var tile = new TileInfo
                    {
                        PartialName = item,
                        TileOrder = i
                    };
                    cookieInfo.Add(tile);
                    i++;
                }
            }
            UpdateCookie(cookieInfo, "TilePreferences", 90);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...