C# 会话[“Role”在';s应该等于;行政";

C# 会话[“Role”在';s应该等于;行政";,c#,webforms,C#,Webforms,在Login.aspx.cs中,我的btnLogin\u Click函数如下所示 protected void btnLogin_Click(object sender, EventArgs e) { if (LoginSuccessful(txtEmail.Text, txtPass.Text)) { Session["User"] = "Hacktivist"; Response.Redirect("Default.as

在Login.aspx.cs中,我的btnLogin\u Click函数如下所示

protected void btnLogin_Click(object sender, EventArgs e)
{
    if (LoginSuccessful(txtEmail.Text, txtPass.Text))
    {            
        Session["User"] = "Hacktivist";
        Response.Redirect("Default.aspx");
    }
    else
    {
        wrong.Visible = true;
    }
}

public Boolean LoginSuccessful(String EmailAddress, String Password)
{
    Boolean result = false;
    String Nickname;
    String Role;

    SqlCommand com = new SqlCommand(
        "select Nickname, Role, Password from Account where EmailAddress =     @EmailAddress", con);
    com.CommandType = CommandType.Text;
    com.Parameters.Add("@EmailAddress", SqlDbType.NVarChar).Value = EmailAddress;
    try
    {
        con.Open();
        SqlDataReader reader = com.ExecuteReader();
        while (reader.Read())
        {
            if (reader["Password"].ToString() == Helper.EncryptPassword(Password))
            {
                Nickname = reader["Nickname"].ToString();
                Role = reader["Role"].ToString();
                Session["Nickname"] = Nickname;
                Session["Role"] = Role;
                result = true;
                break;
            }
        }
    }
    catch
    {

    }
    finally
    {
        con.Close();
    }
    return result;
}
protected void Page_Load(object sender, EventArgs e)
{
    if (Session["User"] != "Hacktivist") 
    {
        Session["Role"] = "Visitor";
    }

}
当管理员帐户成功登录时,它将被重定向到Default.aspx,Default.aspx后面的代码如下所示

protected void btnLogin_Click(object sender, EventArgs e)
{
    if (LoginSuccessful(txtEmail.Text, txtPass.Text))
    {            
        Session["User"] = "Hacktivist";
        Response.Redirect("Default.aspx");
    }
    else
    {
        wrong.Visible = true;
    }
}

public Boolean LoginSuccessful(String EmailAddress, String Password)
{
    Boolean result = false;
    String Nickname;
    String Role;

    SqlCommand com = new SqlCommand(
        "select Nickname, Role, Password from Account where EmailAddress =     @EmailAddress", con);
    com.CommandType = CommandType.Text;
    com.Parameters.Add("@EmailAddress", SqlDbType.NVarChar).Value = EmailAddress;
    try
    {
        con.Open();
        SqlDataReader reader = com.ExecuteReader();
        while (reader.Read())
        {
            if (reader["Password"].ToString() == Helper.EncryptPassword(Password))
            {
                Nickname = reader["Nickname"].ToString();
                Role = reader["Role"].ToString();
                Session["Nickname"] = Nickname;
                Session["Role"] = Role;
                result = true;
                break;
            }
        }
    }
    catch
    {

    }
    finally
    {
        con.Close();
    }
    return result;
}
protected void Page_Load(object sender, EventArgs e)
{
    if (Session["User"] != "Hacktivist") 
    {
        Session["Role"] = "Visitor";
    }

}
我将导航到Event.aspx,在那里我可以看到编辑超链接和btnAdd(如果我是管理员),但问题是btnAdd仍然可见=false,即使我使用的帐户的角色为admin。.aspx代码如下所示:

 <div class="container marketing"> 
    <asp:Button ID="btnAdd" runat="server" Text="Create Event" Visible="false" OnClick="btnAdd_Click" />
  <!-- Three columns of text below the carousel -->
  <div class="row">
    <ul>
        <asp:ListView ID="lvEvent" runat="server">
            <ItemTemplate>
      <div class="col-lg-4">

                <li>
                    <img class="img-circle" src="<%# Eval("Poster") %>" alt="Generic placeholder image" style="width: 140px; height: 140px;">
                    <h2>
                    <a href="Event_Detail.aspx?EventID=<%# Eval("EventID") %>">
                        <%# Eval("Name") %>
                    </a>
                    </h2>
                    <h4>
                        <%# Eval("Venue") %> 
                    </h4>
                    <h5>
                        <%# Eval("Country") %>
                    </h5>
                    <h6>
                        <%# Eval("DateTimeStarted.Year") %> 
                    </h6>

                    <%if (Session["Role"].ToString() == "Admin")
                      { %>
                        <a href="Event_Edit.aspx?EventID=<%# Eval("EventID") %>">Edit</a>
                    <%} %>


                </li>

    </div><!-- /.col-lg-4 -->
    </ItemTemplate>
        </asp:ListView>
        </ul>
</div>
public partial class Event : System.Web.UI.Page
{
    SqlConnection con = new SqlConnection(Helper.GetConnectionString());

    protected void Page_Load(object sender, EventArgs e)
    {
        GetEvents();

        if (Session["User"] == "Hacktivist")
        {
            if (Session["Role"] == "Admin")
            {
                btnAdd.Visible = true;
            }
        }

    }

    void GetEvents()
    {
        con.Open();
        SqlCommand com = new SqlCommand(
            "select * from event order by DateTimeStarted desc",
            con);
        SqlDataReader reader = com.ExecuteReader();
        lvEvent.DataSource = reader;
        lvEvent.DataBind();
        con.Close();
    } 

    protected void btnAdd_Click(object sender, EventArgs e)
    {
        Response.Redirect("Event_Add.aspx");
    }
}
谢谢大家的帮助。

你试过了吗

a) 我假设,虽然这个角色是Admin,但这个词的情况可能会有一些差异。为了确保这不会导致问题,请尝试此角色。ToLower().toString()=“admin”

b) 请确保Jquery或CSS中没有在页面加载事件后禁用按钮的代码

希望能对你有所帮助


谢谢

btnAdd在哪里设置为
Visible=true
?。看起来它总是false。在Event.aspx.cs的页面上,btnAdd设置为Visible=true