我有一个菜单,我有一个条件是用户是否登录该站点,因此如果用户没有登录该站点,则某些选项不会显示(选项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。 谢谢你的帮助。
答案 0 :(得分:1)
这是你所指的bool userIdAuthenticated的变量吗? 因为你有2个变量,一个是Page_Load方法的局部变量,另一个是类中的公共变量。 认为这是你想要做的事情:
protected void Page_Load(object sender, EventArgs e)
{
userIdAuthenticated = Convert.ToBoolean(Session["userIdAuthenticated"]);
}