Проверьте, существует ли модель / сеанс и не является ли он нулевым в JavaScript - PullRequest
1 голос
/ 30 октября 2019

Я создал всплывающее окно с намерением выхода, которое будет отображаться, когда пользователь захочет покинуть сайт. Это всплывающее окно сохранит запись в базе данных (если выбрано раскрывающееся меню и у клиента есть действительный уникальный ключ). Все это прекрасно работает.

Проблема, с которой я сталкиваюсь, заключается в том, что всплывающее окно не должно отображаться, если пользователю не назначен действительный уникальный ключ (созданный при отправке первой страницы). Этот ключ находится в сеансе (этот сеанс является объектом класса) ...

Вот как он создается:

Объект класса:

    public class PolicyBase
    {
        //This will hold the whole object in terms of the policy

        public string SessionKey { get; set; }
        public int polKey { get; set; }
        //Other items
    }

НастройкаСессии:

    public class SessionHelper
    {
    #region Session INIT

    public static PolicyBase PolicyBase
    {
        get { return GetSession<PolicyBase>("PolicyBase"); }
        set { SetSession("PolicyBase", value); }
    }
    }

Это мой javascript, запущенный на странице General.js, которая используется на всем сайте. Показывает, что всплывающее окно работает нормально:

    addEvent(document, "mouseout", function (e) {
    e = e ? e : window.event;
    var from = e.relatedTarget || e.toElement;
        if (!from || from.nodeName == "HTML") {
            //if (event.clientY <= 0 || event.clientX <= 0 || (event.clientX >= window.innerWidth || event.clientY >= window.innerHeight)) {
            if (event.clientY <= 0 || (event.clientY >= window.innerHeight)) {
                $("#dialog-exit-intent").modal("show");
            }
        }
});

Это то, что я пытался проверить для сессии в javascript (это не работает):

    addEvent(document, "mouseout", function (e) {
    e = e ? e : window.event;
    var from = e.relatedTarget || e.toElement;

   // var session = '<%= Session["PolicyBase"] %>';
    var session = localStorage.getItem("PolicyBase")
    alert(session);

    var varQuoteKey = localStorage.getItem("PolicyBase"); // '<%= Session["PolicyBase"] %>';
    if (session.val() != null && session.val() != '') {

        if (!from || from.nodeName == "HTML") {
            //if (event.clientY <= 0 || event.clientX <= 0 || (event.clientX >= window.innerWidth || event.clientY >= window.innerHeight)) {
            if (event.clientY <= 0 || (event.clientY >= window.innerHeight)) {
                $("#dialog-exit-intent").modal("show");
            }
        }
    }
});  

В основном то, что я хочунужно проверить, существует ли сессия и не является ли она нулевой (например, работает код на c #)

    public ActionResult SavePolicyLeaveReason(int exitIntentLeaveReasonKey)
    {
        var polBase = SessionHelper.PolicyBase;
        //some code 

        if (polBase != null)
        {
            //some code
            polStatus = "T";
        }
        else
        {
            polStatus = "F";
        } 
        return Json(polStatus);
    }

Можно ли мне как-нибудь это сделать? Или есть лучшее решение для этого? Я читал об ожидании окончания загрузки страницы, но даже после того, как это будет сделано, выше все равно будет проблема)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...