Проверка подлинности форумов SignOut не работает при генерации html в виде строки в литерал - PullRequest
2 голосов
/ 11 июля 2011

Я пытаюсь создать кнопку выхода через динамически генерируемый 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-строке для литерала, который это вызывает?

Не мог бы кто-нибудь сказать мне, как это сделать?

Спасибо!

1 Ответ

1 голос
/ 11 июля 2011

Во-первых, вы пытаетесь сделать сообщение обратно, используя клиентское событие javascript (onlick = "..."). Кроме того, использование директивы ASP.net <% =%> в коде не будет работать. На самом деле, если вы прямо сейчас проверяете HTML-код в вашем браузере, вы, вероятно, имеете что-то вроде этого:

onclick="<%=LogOut_OnClick%>"

В любом случае, если вы не можете сгенерировать этот код в своем aspx-файле, вам следует подумать о его замене функцией __dopostback javascript (/3942481/kak-ispolzovat-dopostback):

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

Тем не менее, вам действительно следует подумать о том, чтобы так или иначе поместить весь этот код в ваш файл aspx. Вот как бы я это сделал:

Welcome, <%= UserName %> (<asp:LinkButton ID="LogoutButton" Text="Logout" runat="server"/>)
...