2011-07-11 6 views
2

動的に生成されたHTML(文字列)を使用してログアウトボタンを作成しようとしています。あなたが見ることができるようにフォーラム認証SignOutがリテラルの文字列として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>)"; 

、logoutメソッドは、サーバーコードではありません。どんなに私が何を

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文字列としてこれを行うことについて何かありますか?

どうすればいいですか?

ありがとうございます!

答えて

1

まず、JavaScriptクライアントサイドイベント(onlick = "...")を使用してポストバックを実行しようとしています。また、ASP.netディレクティブ<%=%>をコードビハインドで使用すると動作しません。ブラウザ上のレンダリングされたHTMLで今確認すると実際には、あなたはおそらく、これらの線に沿って何か持っている:あなたはあなたのASPXファイルでこのコードを生成することができない場合は、とにかく

onclick="<%=LogOut_OnClick%>" 

を、あなたは、交換を検討すべきです__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"/>) 
関連する問題