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 回答