在asp.net中使用jqgrid进行表单身份验证

时间:2012-01-05 11:02:31

标签: asp.net jqgrid forms-authentication jqgrid-asp.net

我正在使用jqgrid,点击jqgrid后,它会在同一页面上打开表单。 我也在使用ASP.Net用户身份验证。

问题是,当我点击网格行并且会话过期时。它以相同的形式打开登录页面,而不是转移到登录页面。

在这方面,任何人都可以帮助我吗?

这是我的jqgrid代码:

$(document).ready(function () {

    $(':checkbox').click(function () {
        var value = $("#cb").is(":checked");
        $("#document-grid").jqGrid('setGridParam', { datatype: function (postdata) {
            $.ajax({
                type: "POST",
                url: "/Calls/Documents.aspx/Find?showarchive=" + value,
                data: JSON.stringify($.extend({ 'filters': '' }, postdata)),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (res) {
                    $("#document-grid")[0].addJSONData(res.d);
                }
            });
        }
        }).trigger("reloadGrid", [{ current: true}]);
    });

    $("#document-grid").generalGrid({
        url: '/Calls/Documents.aspx/Find',
        jqGridOptions: {
            pager: '#document-grid-pager',
            colNames: ['Titel', 'Uploaddatum', 'Omschrijving', 'Bestandsnaam'],  //, 'Type' ],
            colModel: [
                    { name: 'Titel', index: 'Title' },
                    { name: 'Uploaddatum', index: 'Uploaddatum', sorttype: 'date', searchoptions: {
                            dataInit: function (elem) {
                                $(elem).datepicker({
                                    onSelect: function(dateText, inst){ $("#document-grid")[0].triggerToolbar(); }
                                });
                            },
                        }
                    },
                    { name: 'Beschrijving', index: 'Description' },
                    { name: 'Bestandsnaam', index: 'Filename' }
            //                    { name: 'Type', index: 'Type' }
                ],
            sortname: 'UploadDate',
            caption: '',
            onSelectRow: function (Id) {
                alert(Id);
                $("#document-form").box('destroy').ajaxFormPanel('destroy').ajaxFormPanel({ url: '/Forms/Document.aspx?Id=' + Id,
                    loaded: function (s) {
                        $("#txtUploadDate, #txtExpirationDate", s.element).datepicker();
                        $(s.element).box({ title: 'Document bewerken' });
                    },
                    postback: function (s) {
                        $("#document-grid").trigger("reloadGrid", [{ current: true}]);
                        // $("#document-form").ajaxFormPanel('destroy').ajaxFormPanel({ url: '/Forms/Document.aspx?Edited=true&Id=' + Id }).ajaxFormPanel('open');                    
                    }
                }).ajaxFormPanel('open');
            }
        }
    });

和我在Web.config中的用户身份验证代码是:

<authentication mode="Forms">
  <forms loginUrl="Login.aspx"
         protection="All"
         timeout="1"
         name=".ASPXFORMSAUTH"
         path="/"
         requireSSL="false"
         slidingExpiration="true"
         defaultUrl="Default.aspx"
         cookieless="UseDeviceProfile"
         domain=""
         enableCrossAppRedirects="false" />
</authentication>

提前完成..

1 个答案:

答案 0 :(得分:0)

我想你可以检查http响应的返回码为301(重定向)。

之类的东西
if (response.status == 301)
{
    document.location = "login.aspx";
    return;
}
load jqgrid normally.