Я создаю внутренний сайт для моей компании, моя целевая страница состоит из плиток, которые представляют собой смесь обязательных и дополнительных плиток.Список плиток и их соответствующий порядок сохраняются в файле 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);
}