2

私の asp.net アプリケーションには、マスター ページ、コンテンツ ページ、およびユーザー コントロールがあります。

メイン マスター ページには、fancybox を iframe として表示するリンクがあります。iframe には、ページにログインするためのフォームがあります。iframe は、ログインのユーザー コントロールを持つログインのコンテンツ ページを持つ新しいマスターページです。

ユーザーがボタンをクリックしてログインすると、サーバー側は資格情報が正しいかどうかをチェックし、そうでない場合はメッセージを表示します。これはすべてカスタムバリデーターを使用して行います。

私の問題は、ユーザーが最初にボタンをクリックしてログインしたときにOKをチェックしますが、資格情報が正しくなく、ユーザーがそれらを再入力すると、Firefoxで次のエラーが発生することです

Error: Sys.WebForms.PageRequestManagerServerErrorException:    
Sys.WebForms.PageRequestManagerServerErrorException: the state information is invalid  
for this page and might be corrupted http.../jquery-1.7.2.js

私が持っているマスターページで

<%-- jQuery --%>
  <script src="<%= ResolveClientUrl("~/Template/Scripts/jquery-1.7.2.js") %>" 
   type="text/javascript"></script>
<%-- jQueryUI --%>
<script src="<%= ResolveClientUrl("~/Template/jqueryui/js/jquery-ui-1.8.21.custom.min.js") %>"
   <script type="text/javascript" src="<%= ResolveClientUrl("~/Template/Scripts/jquery.fancybox-1.4.3.min.js") %>">
</script>
<script type="text/javascript" charset="utf-8">
    $(document).ready(function () {
        $("#LoginLightBox").fancybox({
            width: 300,
            height: 750,
            scrolling: "no"
        });
        $("#RegistroLightbox").fancybox({
            width: 300,
            height: 750,
            scrolling: "no"
        });
    });

</script>
<asp:ContentPlaceHolder ID="HeadContent" runat="server">
</asp:ContentPlaceHolder>
<body id="page1">
<form id="Form1" runat="server">
<asp:ScriptManager ID="ScriptManager" runat="server">
</asp:ScriptManager>
<div >
<li style="display:inline"><a class="labelsTipolinks" id="LoginLightBox" href="Login.aspx?iframe=true">Login</a></li>
<li style="display:inline;color: #C53005;">|</li>
<li style="display:inline"><a class="labelsTipolinks"  id="RegistroLightbox" href="RegistroUsuario.aspx?iframe=true">Registro</a></li>   

コンテンツ ページ:

<%@ Register TagPrefix="uc1" TagName="Login" Src="~/Controles/Login.ascx" %>

そして最後にユーザーコントロール:

<div style="margin-top: 20px">
    <asp:UpdatePanel runat="server" ID="updPanelLoginIncorrecto">
        <ContentTemplate>
            <asp:CustomValidator ForeColor="Red" OnServerValidate="usuarioExistente_Validation"
                Display="Static" Font-Size="Small" runat="server" ID="vldLogin" 
                ValidationGroup="grupoValidacionLoginUsuario"
                Text="<%$ Resources:LocalizedText, MsjError_LoginIncorrecto%>">
            </asp:CustomValidator>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="btnLoginLightbox" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>
</div>
<div class="tableContent" style="float: right;">
    <asp:Button CssClass="button" ID="btnLoginLightbox" Text="Login" runat="server" OnClick="btnLogin_Click"
        ValidationGroup="grupoValidacionLoginUsuario" />
</div>

これが私を夢中にさせているのを助けてください。私はすでにイベント検証をfalse、セッション、response.cache.setno ...などに設定しようとしましたが、どれもうまくいきませんでした。

編集

エラーが発生する行は jquery 1.7.2.js にあり、jQuery.dequeue( elem, type ); という行にあります。

編集2

ファンシーボックスをマスター内のインライン要素として配置することになりましたが、それは私が望む解決策ではありません。私を助けてください!!!!!

4

2 に答える 2

2

何週間も試した後、type:"iframe" を入れてみたところ、魔法のようにうまくいきました! 私は何をしなければならないのか分かりませんが、今はうまくいきます:)コードは次のようになります:

<script type="text/javascript" charset="utf-8">
$(document).ready(function () {
    $("#LoginLightBox").fancybox({
        type: "iframe",
        width: 300,
        height: 750,
        scrolling: "no"
    });
    $("#RegistroLightbox").fancybox({
        type: "iframe",
        width: 300,
        height: 750,
        scrolling: "no"
    });
});

</script>
于 2012-08-10T14:40:55.803 に答える
0

私は過去に同様の問題に遭遇しました。マスターページにある<% %>ことを扱っていると思いますが、間違っているかもしれません。<head>マスター ページをこれに置き換えて、問題が解決するかどうかをお知らせください。

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/jquery-ui.min.js"></script>
<script type="text/javascript" src="~/Template/Scripts/jquery.fancybox-1.4.3.min.js">
</script>
<script type="text/javascript">
    $(document).ready(function () {
        $("#LoginLightBox").fancybox({
            width: 300,
            height: 750,
            scrolling: "no"
        });
        $("#RegistroLightbox").fancybox({
            width: 300,
            height: 750,
            scrolling: "no"
        });
    });

</script>
<asp:ContentPlaceHolder ID="HeadContent" runat="server">
</asp:ContentPlaceHolder>
    </head>
<body id="page1">
<form id="Form1" runat="server">
<asp:ScriptManager ID="ScriptManager" runat="server">
</asp:ScriptManager>
<div>
    <ul>
<li style="display:inline"><a class="labelsTipolinks" id="LoginLightBox" href="Login.aspx?iframe=true">Login</a></li>
<li style="display:inline;color: #C53005;">|</li>
<li style="display:inline"><a class="labelsTipolinks"  id="RegistroLightbox" href="RegistroUsuario.aspx?iframe=true">Registro</a></li>
</ul>
    </div>
</form>
</body>
</html>
于 2012-08-03T16:15:05.937 に答える