同様の質問を投稿するつもりでしたが、このスレッドを見つけたので、追加することにしました。詳細はこちら。
私のマスターページで、シックボックスをトリガーする次のリンクを取得しました
<a runat="server" href="~/users/login.aspx?TB_iframe=true&height=160&width=260" class="thickbox">login</a>
これは私の login.aspx ページの HTML です
<div runat="server" id="divAuthenticate" style="margin: 0px 10px 0px 10px;">
<div class="row">
<asp:label runat="server" associatedcontrolid="txtUserEmailAddress" text="Email Address"/>
<asp:textbox runat="server" id="txtUserEmailAddress" cssclass="defaultTxt" width="260px" />
</div>
<div class="row">
<asp:label runat="server" associatedcontrolid="txtUserPassword" text="Password" />
<asp:textbox runat="server" id="txtUserPassword" cssclass="defaultTxt" width="260px" />
</div>
<div class="row">
<asp:label id="lblMsg" runat="server" forecolor="Red" />
</div>
<div class="row" style="text-align:right;">
<asp:button runat="server" id="cmdLogin" cssclass="button" text="login" />
</div>
</div>
<div id="divContinue" style="margin: 40px;" runat="server" visible="false">
<asp:button runat="server" id="cmdContinue" cssclass="button" text="Continue..." onclientclick="self.parent.tb_remove();self.parent.location.reload(true);" />
</div>
私のlogin.aspxページのコードビハインドは次のとおりです
Protected Sub cmdLogin_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmdLogin.Click
If users.authenticate(txtUserEmailAddress.Text, txtUserPassword.Text) = sqlHelpers.userCommand.success Then
'store the username so that next time around we can load it to the username textbox
Dim cookie As New HttpCookie("username")
cookie.Values.Add("userName", txtUserEmailAddress.Text)
cookie.Expires = DateTime.Now.AddDays(5)
Response.Cookies.Add(cookie)
FormsAuthentication.SetAuthCookie(txtUserEmailAddress.Text, True)
divAuthenticate.Visible = False
divContinue.Visible = True
Else
lblMsg.Text = "invalid username or password!"
End If
End Sub
したがって、ユーザーが正常に認証されると、一方の div を非表示にしてもう一方を表示するだけです。もう 1 つは、thickbox を閉じて親をリロードする続行ボタンを含みます。現在、これは最善の解決策ではありませんが、タスクの送信が成功したときにシックボックスの自動クローズをトリガーするコードを誰かが提供できることを願っています。