2

動的に生成されたHTML(文字列)を使用してログアウトボタンを作成しようとしています。

htmlGen = "<div class=\"issue\" style=\"float:right; width:70%;\">";
htmlGen += "Welcome, " + Page.User.Identity.Name.ToString() + " (<a href=\"#\" id=\"LogOutLink\" onclick=\"<%=LogOut_OnClick%>\"> logout </a>)";

ご覧のとおり、ログアウト方法はサーバーコードにあります。

 public void LogOut_OnClick(object sender, EventArgs args)    {
          FormsAuthentication.SignOut();

            string htmlGen = "<div class=\"issue\" style=\"float:right; width:45%;\">";
            htmlGen += "<a style=\"color:White;\" href=\"/Login.aspx\">Login</a>";
            htmlGen += "&nbsp;|&nbsp;<a style=\"color:White;\" href=\"/Accounts/SignUp.aspx\">Register</a>";
            this.Literal1.Text = htmlGen + "</div>";

           FormsAuthentication.RedirectToLoginPage();


   }

私が何をしても、これは機能しないようです(起動しない、ログアウトしないなど)。これを引き起こしているリテラルへのHTML文字列としてこれを行うことについて何かありますか?

誰かが私にこれを行う方法を教えてもらえますか?

ありがとう!

4

1 に答える 1

1

まず、javascriptクライアントサイドイベント(onlick = "...")を使用してポストバックを実行しようとしています。また、コードビハインドでASP.netディレクティブ<%=%>を使用しても機能しません。実際、ブラウザでレンダリングされたHTMLを今すぐチェックすると、おそらく次のような線に沿ったものがあります。

onclick="<%=LogOut_OnClick%>"

とにかく、aspxファイルでこのコードを生成できない場合は、これを__dopostback javascript関数(http://stackoverflow.com/questions/3591634/how-to-use-dopostback)に置き換えることを検討する必要があります。

[...] htmlGen += "onclick=\"__dopostback('" + LogOutButton.ID + "')\""; [...]

ただし、このすべてのコードを何らかの方法でaspxファイル内に配置することを実際に検討する必要があります。これが私がそれをする方法です:

Welcome, <%= UserName %> (<asp:LinkButton ID="LogoutButton" Text="Logout" runat="server"/>)
于 2011-07-11T19:28:27.527 に答える