从数据库保存字符串并进入会话存储

时间:2018-06-18 22:26:07

标签: javascript jquery mysql asp.net-core session-cookies

我有一个ASP.NET核心项目,MySQL作为我的数据库。我正在尝试创建一个迷你头版公告/横幅,就像您在访问的每个网页上看到的那样(隐私政策横幅)。

当用户访问该网站时,他们显然会阅读该消息,然后必须单击x按钮才能关闭该消息。我在JavaScript中使用了remove()方法来实现这一目标。在清除浏览器缓存之前,该消息不会再次出现。

最佳路线是什么?他们的选择是保存在会话中还是Cookie中?

此外,我在以下情况下收到异常错误:

  

System.ArgumentNullException:'字符串引用未设置为字符串的实例。'

我做的远程接近正确吗?

HomeController.cs

const string SessionKeyMessage = "_Message";

    public IActionResult Index(string announcements)
    {
        JumboVM jumboVM = new JumboVM();

        var message = _service.GetMessages();
        message = message.Where(m => m.Message == announcement);

        jumboVM.BannerAnnouncement = _context.BannerAnnouncements;

        HttpContext.Session.SetString(SessionKeyMessage, announcement); =>throws an exception

        string messages = HttpContext.Session.GetString(SessionKeyMessage);

        ViewBag.BannerAnnouncement = messages;

        return View(jumboVM);
    }

索引视图

@model Example.Models.JumboVM.JumboVM

@foreach (var item in Model.BannerAnnouncement)
{
    @if (item.Message != null)
    {
        <div id="div" style="background-color: aliceblue; padding: 40px;">
            @item.Message
            //@ViewBag.BannerAnnouncement =>throws an exception error
            <span id="button" class="text-center" style="font-size: 1.5em; cursor:pointer;">&times;</span>
        </div>    
    }    
}    

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script>
    $(document).ready(function () {
        $("#button").click(function () {
            $("#div").remove();
        });
    });
</script>

0 个答案:

没有答案