MasterPage.master中的变量无法正常工作

时间:2013-12-26 21:52:48

标签: c# asp.net html5

我有一个菜单,我有一个条件是用户是否登录该站点,因此如果用户没有登录该站点,则某些选项不会显示(选项C)。

来自MasterPage.master的代码

<div id="menu"> 
   <ul id="menua"; class="ul menua">
      <li><a href="../pages/OptionA.aspx">Option A</a></li>
      <li><a href="../pages/OptionB.aspx">Option B</a></li>
      <% if(userIdAuthenticated) {  %>
            <li><a href="../pages/OptionC.aspx">Option C</a> </li>'
      <% } %> 
   </ul>
</div> 

在母版页的代码发送中,我只是传递bool Session变量来说明用户是否已被授权。

来自MasterPage.master.cs的代码

public partial class MasterPage : System.Web.UI.MasterPage
{
    public bool userIdAuthenticated ;

    protected void Page_Load(object sender, EventArgs e)
    {
        bool userIdAuthenticated = Convert.ToBoolean(Session["userIdAuthenticated"]);
    }
}

在登录page.cs中,如果用户输入的是正确的凭证,我只是将bool会话变量初始化为true。

bool buserIdAuthenticated = false;
bool result = pwdManager.IsPasswordMatch(txtMotPasse.Text, sqlReader["salt"].ToString(),  
     sqlReader["hash"].ToString());
if (result == true)
   {
       buserIdAuthenticated = true;
       Session["userIdAuthenticated"] = buserIdAuthenticated;
       Response.Redirect("default.aspx");

当我调试代码时,一切都很好,直到我回到Master.master然后变量返回false并且我真的不明白它从哪里变回false,因为当我从Session移动它时变量将其设置为true。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

这是你所指的bool userIdAuthenticated的变量吗? 因为你有2个变量,一个是Page_Load方法的局部变量,另一个是类中的公共变量。 认为这是你想要做的事情:

protected void Page_Load(object sender, EventArgs e)
{
   userIdAuthenticated = Convert.ToBoolean(Session["userIdAuthenticated"]);
}