在页面之间传递变量,并在 asp.net 中基于它获得结果

Passing variable between pages and get result based on it in asp.net

本文关键字:net asp 于它获 结果 并在 之间 变量      更新时间:2023-09-26

上一页

test.Controls.Add(GetButton(thisReader["session_id"].ToString(), "Join Session"));

 protected void Button_Click(object sender, CommandEventArgs e)
        {
            Response.Redirect("EnterSession.aspx?session=" + e.CommandArgument.ToString());
        }

在下一页上输入会话.aspx

我想使用session_id从基于mssql数据库的session_id返回结果session_name。然后我想获取与session_id对应的session_name值,并使用以下JS方法调用该值:

document.getElementById('session_name').value).

一些想法如何做到这一点。

我不完全确定您要实现的目标(例如,id为"session_name"的元素是什么/在哪里?),但我认为您需要在EnterSession.aspx页面背后的代码中执行以下操作:

protected string _SessionName = null;
public string SessionName
{
    get
    {
        if (null == _SessionName)
        {
            using (var connection = new SqlConnection("connString"))
            {
                connection.Open();
                using (var command = new SqlCommand(" SELECT session_name FROM Sessions WHERE session_id = @SessionId", connection))
                {
                    command.Parameters.Add("@SessionId", SqlDbType.Int);
                    command.Parameters["@SessionId"].Value = Convert.ToInt32(Request.QueryString["session"]);
                    using (var reader = command.ExecuteReader())
                    {
                        if (reader.Read())
                        {
                            _SessionName = reader.GetString(0);
                        }
                        else
                        {
                            throw new ArgumentException("Invalid session id");
                        }
                    }
                }
            }
        }
        return _SessionName;
    }
    }

然后在 EnterSession.aspx 页面的标记中,您将需要如下所示的内容:

<input type="hidden" id="session_name" />
<script type="text/javascript">
    document.getElementById('session_name').value = '<%= this.SessionName %>';
</script>