ASP.NET母版页超链接控件不工作

ASP.NET母版页超链接控件不工作,asp.net,hyperlink,master-pages,Asp.net,Hyperlink,Master Pages,我不熟悉ASP.NET(以及一般的web开发)。 由于某些原因,在我的ASP.NET母版页中,超链接web控件不起作用 我希望将它们作为web控件,这样,如果用户会话当前已登录,我可以将“登录”超链接文本更改为“注销”(以及其navigateURL) 有人能找到问题吗 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dt

我不熟悉ASP.NET(以及一般的web开发)。 由于某些原因,在我的ASP.NET母版页中,超链接web控件不起作用

我希望将它们作为web控件,这样,如果用户会话当前已登录,我可以将“登录”超链接文本更改为“注销”(以及其navigateURL)

有人能找到问题吗

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head runat="server">
    <title></title>
    <link href="~/Styles/default.css" rel="stylesheet" type="text/css" />
    <asp:ContentPlaceHolder ID="HeadContent" runat="server">
    </asp:ContentPlaceHolder>
    <style type="text/css">
        .style1
        {
            width: 468px;
        }
    </style>
</head>
<body>
    <form id="Form1" runat="server">
    <div id="wrapper" runat="server">
        <div id="header" class="container" runat="server">
            <table style="width: 100%; height: 128px;" runat="server">
                <tr>
                    <td class="style1" runat="server">
                        WEBLINK
                    </td>
                    <td>
                        <asp:HyperLink ID="HyperLink1" runat="server">About</asp:HyperLink>
                    </td>
                    <td>
                        <asp:HyperLink ID="HyperLink2" runat="server" 
                            NavigateUrl="~/InterestPages/InterestNews.aspx">Interests</asp:HyperLink>
                    </td>
                    <td>
                        <asp:HyperLink ID="HyperLink3" runat="server">Blogs</asp:HyperLink>
                    </td>
                    <td>
                        <asp:HyperLink ID="loginLink" runat="server" NavigateUrl="~/Account/Login.aspx" 
                            ViewStateMode="Enabled">Login</asp:HyperLink>
                    </td>
                </tr>
            </table>
        </div>
    </div>
    <asp:ContentPlaceHolder ID="MainContent" runat="server">
            </asp:ContentPlaceHolder>
    </form>
</body>

当会话不为null时,您的NavigateUrl为空。因此,请更改此行
loginLink.NavigateUrl=“#”

试试这个代码

if (Session["LoggedIn"] != null && (bool)Session["LoggedIn"] == true)
        {
            loginLink.Text = "Log out";
           loginLink.NavigateUrl = "#";
        }
else
        {
            loginLink.Enabled = true;
            loginLink.Text = "Login";
            loginLink.NavigateUrl = "~/Account/Login.aspx";
        }

为什么不直接用asp LoginView控件替换登录菜单链接呢? 您可以使用登录链接添加匿名模板,以指向您的登录页面,然后 通过添加LoginStatus,创建一个带有注销链接的LoggedIn模板。 它让您对登录用户表示欢迎。 哦,它还让你摆脱了所有的初始化前的东西和会话跟踪

您可以使用用户标识isAuthenticated来确定该会话是否已登录

如果你想为你的登录页面使用不同的母版页。。。您可以为您的登录页面创建一个或将其指向另一个母版页


我也不认为您的预初始化正在启动。

试试看,我会试试这种方法,看看效果如何。谢谢
if (Session["LoggedIn"] != null && (bool)Session["LoggedIn"] == true)
        {
            loginLink.Text = "Log out";
           loginLink.NavigateUrl = "#";
        }
else
        {
            loginLink.Enabled = true;
            loginLink.Text = "Login";
            loginLink.NavigateUrl = "~/Account/Login.aspx";
        }