【问题标题】:C# Populate drop down based on data from cookieC# 根据 cookie 中的数据填充下拉列表
【发布时间】:2011-06-08 16:46:10
【问题描述】:

我会看看我是否可以足够清楚地解释这一点。我有 2 个网络表单。一个是基本的表单身份验证登录页面,另一个表单显示来自多个服务器的任务。我正在创建一个存储用户 ID 的 cookie。这是我的 cookie 的代码:

        FormsAuthenticationTicket tkt = new FormsAuthenticationTicket(1, txtUser.Text, DateTime.Now, DateTime.Now.AddMinutes(120), true, rdr.GetInt32(0).ToString(), FormsAuthentication.FormsCookiePath);
        string hash = FormsAuthentication.Encrypt(tkt);
        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);

在我的另一个表单中,我有一个下拉框,它按服务器 IP 显示服务器表中的所有服务器。

public void Populate()
        {
            SqlConnection myConnection1 = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString);
            myConnection1.Open();

            SqlCommand cmd1 = new SqlCommand("SELECT ServerIP FROM Servers", myConnection1);
            SqlDataReader dropReader;
            dropReader = cmd1.ExecuteReader();

            drpChoose.DataSource = dropReader;
            drpChoose.DataTextField = "ServerIP";
            drpChoose.DataValueField = "ServerIP";
            drpChoose.DataBind();
        }

我在页面加载中调用填充。我有另一个存储权限的表。它具有 UserID、ServerID 和 Permission(读取或执行)。假设 UserID 1 仅与 IP 为 192.168.0.10 的 ServerID 1 相关联。如何让这个服务器 IP 显示在下拉列表中?我很确定如果我将 cookie 传递到可以从中获取 UserID 的第二种形式,但我不知道从哪里开始。

如果我没有提供足够的信息,我深表歉意。如果需要,我会提供更多。

【问题讨论】:

    标签: c# sql webforms


    【解决方案1】:

    看起来你需要加入你的权限表,比如

    SELECT ServerIP from Servers s, Permissions p where p.serverid = s.serverid and p.userid = :userIdFromCookie
    

    然后您需要将 cookie 中的用户 ID 传递到 Populate 方法中,并使用 DbParameter 将值传递到您的 Sql 命令中。

    类似的东西(顺便说一下,这是伪代码,因为我不在我的开发机器上)

    cmd.AddInParameter(":userIdFromCookie",dbType.AnsiString, Request.Cookies["mycookie"]["userid"])
    

    【讨论】:

    • 我已经完成了连接,但不知道如何传入 cookie。我是将 HTTPCookie 传递给 Populate 还是传递 UserID?
    • 我会在页面加载时从 cookie 中检索用户 ID,然后将用户 ID 传递给 Populate。
    • 我添加了代码 if (Request.Cookies["userID"] != null) { int uid; int.TryParse(Request.Cookies["userID"].ToString(), out uid);填充(uid);但即使 cookie 显示正确的 uid,uid 仍为 0
    • 对不起。我将以上内容添加到页面加载,然后将我的变量传递给 Populate 方法。我的 select 语句是 SELECT ServerIP FROM Servers s, Roles r 其中 s.ServerID=r.ServerID AND r.UID=" + userid. userid 是我传入的变量。
    • 知道了。 int.TryParse(Request.Cookies["userID"].Value, out uid);需要使用 .Value 而不是 .ToString()。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 2015-07-08
    • 2012-10-20
    相关资源
    最近更新 更多