2013-06-11 3 views
0

Я новичок в ASP.NET (и веб-разработке в целом). По какой-то причине на моей главной странице ASP.NET веб-элементы гиперссылки не работают.Элементы управления гиперссылкой главной страницы ASP.NET не работают

Я хочу их как веб-управления, так что я могу изменить «Login» гиперссылкой текст «Выйти» (а также его 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> 

Вот мой C# главная страница код:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class SiteMaster : System.Web.UI.MasterPage 
{ 
    private void Page_PreInit(object sender, EventArgs e) 
    { 
     if (Session["LoggedIn"] != null && (bool)Session["LoggedIn"] == true) 
     { 
      MasterPageFile = "~/LoggedIn.master"; 
     } 
     else 
     { 
      MasterPageFile = "~/Site.master"; 
     } 
    } 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     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"; 
     } 
    } 


} 
+0

try ">Log Out Niks

ответ

1

Почему бы не просто заменить свой логин меню ссылку с контролем LoginView осины? Вы можете добавить шаблон анонимного, указав свою страницу входа, а также шаблон LoggedIn с вашей ссылкой на выход, добавив LoginStatus. Позволяет вам приветствовать зарегистрированного пользователя. О, и это также позволит вам избавиться от всего, что преминирует вещи и отслеживания сессии.

Вы можете использовать идентификатор пользователя isAuthenticated, чтобы определить, что сессия регистрируется в.

И если вы хотите использовать другую главную страницу для страницы входа ... Вы можете просто создать для вашей страницы входа в системе или указать его на другую главную страницу.

Я также не думаю, что ваш pre-init стреляет.

+0

Я попробую этот подход и посмотрю, как это происходит. Благодарю. – user2225945

1

У вас есть пустой 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"; 
     } 
+0

Я попробовал. Кажется, это не работало. – user2225945

Смежные вопросы