关闭jquery对话框后会话到期

时间:2012-02-07 11:01:00

标签: c# jquery asp.net

在我的Web应用程序中,我使用jquery对话框打开弹出窗口。 用于执行此任务的函数是:

function OpenPopup(popupTarget, width, height, params, onOpenFunction, onCloseFunction, popupElement){

// some code to parse the parameters
//`popupElement` is a div with `style="display: none;"`
// included in a master page which every page inherits from

    $(popupElement).dialog(
{
    autoOpen: false,
    resizable: false,
    height: height,
    width: width,
    modal: true,
    open: onOpenFunction,
    closeOnEscape: false,
    close: function (e)
    {
        var popupResult = $(this).dialog("option", "notification");

        $(this).dialog("destroy");

        if (!isHTMLElement)
            popupFrame.css("visibility", "hidden");

        if (jQuery.isFunction(onCloseFunction))
        {
            var funct = eval(onCloseFunction);
            funct(popupResult);
        }
    }
});

$(popupElement).dialog("open");
}

这是调用上述方法的函数:

function FiltroNotifiche(){
params = "";

OpenPopup("~/manage/Popup/FiltroNotifiche.aspx", 450, 350, params, function (e) { }, function (strNotification)
{
    OnPopupReturn(true, strNotification, function ()
    {
        __doPostBack('UpdatePanel', 'Filtro=true');
    });
});
}

function OnPopupReturn(bRefresh, strNotification, senderFunction){
// this function parses strNotification and if, successful, calls:
    var funct = eval(senderFunction);
    funct();

}

在弹出窗口中我使用ICallbackEventHandler回调接口。

问题是在打开和关闭弹出窗口后(我可以看到正在执行的回调和所有),无论我接下来做什么,我都会被踢出去,很可能是因为会话已经过期。

我注意到一件奇怪的事情是,只有当我到达通过菜单控件打开弹出窗口(GestioneNotifiche.aspx)的页面时,才会发生 ,因为如果我通过按钮到达那里PostBackUrl在另一个页面中,这不会发生,并且会话幸福快乐!

该菜单有一个xml数据源和这些绑定:

<DataBindings>
  <asp:MenuItemBinding DataMember="Menu" TextField="Text" Selectable="false" />
  <asp:MenuItemBinding DataMember="MenuItem" NavigateUrlField="NavigateUrl" TextField="Text" ValueField="Value" />
</DataBindings>

这是菜单项:

<MenuItem Value="" Text="Gestione notifiche" NavigateUrl="~/manage/GestioneNotifiche/GestioneNotifiche.aspx" />

我确实注意到通过菜单调用Request.HttpMethod = "GET",而通过回发它(显然)"POST"。这可能是重要的吗?我对GET和POST之间的区别并不是很了解。

谢谢

1 个答案:

答案 0 :(得分:0)

听起来您的问题是正在清除身份验证而不是您的会话。检查您的page_load事件,看看您是否在GET和POST请求之间做了任何不同的事情,这将导致清除身份验证。