在asp.net中对不同子页面上的控件进行分组

时间:2013-01-10 05:55:36

标签: c# asp.net

我所做的是登录,用户名出现在我的母版页的标签中。我需要做的是,如果登录用户具有管理员权限,则在多个子页面上创建可见控件(包括一个子页面上的gridview deletecontrol)。一直在努力弄明白。只是想学习。

有没有办法对类调用admin下的所有控件进行分类,并在检查用户权限时从masterpage调用?

登录页面代码

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.Adapters;

public partial class login1 : System.Web.UI.Page
{

    public void Page_Load(object sender, EventArgs e)
    {

    }

    protected void LoginButton_Click(object sender, EventArgs e)
    {        
        DataSet ds = new DataSet();
        ds = WCGSQL.showdata("select * from Login where Username='" + UserName.Text + "' and Password='" + Password.Text + "'");
        if (ds.Tables[0].Rows.Count != 0)
        {

            Session["Username"] = UserName.Text;
            Response.Redirect("Home.aspx");

        }
        else
        {
            FailureText.Visible = true;
            FailureText.Text = "Invalid Login";
        }
    }
}

背后的应用/代码

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public class WCGSQL
{
    static SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|WCG.mdf;Integrated Security=True;User Instance=True");
    static public Boolean savedata(string qurt)
    {
        try
        {
            SqlCommand cmd = new SqlCommand(qurt, con);
            con.Open();
            cmd.ExecuteNonQuery();
            return true;
        }
        catch
        {
            return false;
        }
        finally
        {
            con.Close();
        }


    }

    static public DataSet showdata(string qurt)
    {
        DataSet ds = new DataSet();
        try
        {
            SqlDataAdapter adp = new SqlDataAdapter(qurt, con);
            adp.Fill(ds);
            return ds;
        }
        catch
        {
            return ds;
        }
    }

}

3 个答案:

答案 0 :(得分:1)

您想使用LoginView控件。请参阅ASP.NET Login Controls Overview以了解整个套件。


来自MSDN的示例:

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
        <form id="form1" runat="server">
            <p>
                <asp:LoginStatus id="LoginStatus1" runat="server"></asp:LoginStatus></p>
            <p>
                <asp:LoginView id="LoginView1" runat="server">
                    <AnonymousTemplate>
                        Please log in for personalized information.
                    </AnonymousTemplate>
                    <LoggedInTemplate>
                        Thanks for logging in 
                        <asp:LoginName id="LoginName1" runat="Server"></asp:LoginName>.
                    </LoggedInTemplate>
                    <RoleGroups>
                        <asp:RoleGroup Roles="Admin">
                            <ContentTemplate>
                                <asp:LoginName id="LoginName2" runat="Server"></asp:LoginName>, you
                                are logged in as an administrator.
                            </ContentTemplate>
                        </asp:RoleGroup>
                    </RoleGroups>
                </asp:LoginView></p>
        </form>
    </body>
</html>

答案 1 :(得分:0)

if (HttpContext.Current.User.IsInRole("member"))
{
  //enable/disable here
}

答案 2 :(得分:-1)

嘿,我做过这样的一个应用程序。您需要做的是为管理员和其他用户制作单独的网页(即在登录页面之后)。然后,您可以通过他的凭据轻松验证管理员并重定向到相应的页面。你可以根据需要放置一些控件。

如果您关注的是创建一个类似控制访问板的应用程序,管理员可以将模块的权限授予其他用户的子页面上显示的内容,请通过回复告诉我。