Asp.net:Response.Write OnServerClick代码隐藏功能不起作用

时间:2018-11-28 09:45:18

标签: c# asp.net

我正在尝试这样做,如果您的Session["LoggedIn"]为true,则wuc( Web用户控件,它是 Navbar ,并已连接到(连接到页面的 MasterPage )会显示一个logout按钮。

所以我这样子:

Response.Write("<a runat='server' ID='lblLogout' class='nav-link' CausesValidation='False' OnServerClick='lblLogout_Click'>Logout</a>");

CodeBehind函数如下所示:

protected void lblLogout_Click(object sender, EventArgs e)
{
    Session.RemoveAll();
    Session["LoggedIn"] = false;
    Session["IsAdmin"] = false;
    Session["Username"] = "";

}

现在,我已经尝试了所有方法,如果我像这样使用response.write,我将无法单击它,否则,它将触发或执行任何操作(如果我未在Response.Write中使用它)。 ,它确实有效。.
我什至尝试使用prinitng asp:LinkButton来查看它是否有效,但是当我使用它时,它不会打印出任何内容:

Response.Write("<asp:LinkButton class='nav-link' runat='server' ID='lblLogout' Text='Logout' CausesValidation='False' OnClick='lblLogout_Click' />");

现在,我找到的解决方案是放置另一个页面注销并将函数放置在PageLoad上,该方法可以工作,但是我想知道是否可以使其工作,所以我可以使用CodeBehind中的函数来代替不得不转到另一页。
我的工作解决方案:

if ((bool)Session["LoggedIn"] == true)
             {
                 Response.Write("<li class='nav-item'> <a runat='server' ID='lblLogout' class='nav-link' CausesValidation='False' href='../PagesForVisitor/wfLogout.aspx'>Logout</a></li><li><a class='navbar-brand' href='#'><img src='" + GetSource() + "' width = '30' height = '30' alt = ''/ ></a></li>");
             }

(此人也打印出个人资料图片)

p.s使用Bootstrap进行样式设置,不确定是否很重要,谢谢大家。

1 个答案:

答案 0 :(得分:1)

您应该使用

<asp:Button id='' runat='server'>

标签 或使用CSS根据样式自定义按钮外观。

您可以在属性中使其成为超链接。