如何通过URL在另一个aspx页面中获取值

时间:2016-06-06 16:23:00

标签: javascript c# sql asp.net sqlcommand

我建立在母版页上的表单,用于搜索用户的存在(在sql数据库中)。如果在提交表单后,sql找到一些用户,那么它应该指向一个新页面并显示该用户的详细信息。

我的主题是:如何在以下页面中保存用户的ID,只为该用户提供一个" SELECT",并显示他的详细信息。

我可以使用javascript,有大师页面,还是不推荐使用?

我的C#/ ASP.NET代码是:

    protected void ClientSearch(object sender, EventArgs e)
    {
        int i;
        string query;
        con.Open();
        sqlcomm.Connection = con;
        query = "Select * FROM Cliente WHERE Cliente.nome='" + textboxclientname.Text + "'AND Cliente.apelido='" + textboxapelido.Text + "'";

        sqlcomm.CommandText = query;
        SqlDataReader dr;
        dr = sqlcomm.ExecuteReader();
        dr.Read();
        if (dr.HasRows)
        {
            //new page
            //At that page, user data may be displayed in textboxes, to be updated


        }
        else
        {
            //show error page
        }

    }

3 个答案:

答案 0 :(得分:1)

将您的信息存储在Session

答案 1 :(得分:1)

如果您要导航到单独的页面,则有很多选项可以保持特定值:

  • 会话
  • 缓存
  • QueryString参数

其中任何一个都可用于轻松存储值,然后在下一页或请求中访问它们。

使用会话存储的示例

因此,在您的情况下,您希望将数据库中返回的值存储在其中一个元素中,然后在下一页上检索:

protected void ClientSearch(object sender, EventArgs e)
{
    using(var con = new SqlConnection("{your-connection-string}"))
    {
        var query = "SELECT * FROM Cliente WHERE nome = @name AND apelido = @apelido";
        using(var comm = new SqlCommand(query,con))
        {
             con.Open();
             // User parameters to avoid SQL Injection
             comm.Parameters.AddWithValue("@name",textboxclientname.Text);
             comm.Parameters.AddWithValue("@apelido",textboxapelido.Text);
             // Get your result and store it in the Session
             var id = -1;
             Int32.TryParse(Convert.ToString(comm.ExecuteScalar()),out id);
             if(id != -1)
             {
                  // Store your ID in the Session
                  Session["UserID"] = id;
                  // Go to your other page
                  Response.Redirect("OtherPage.aspx");
             }
             else
             {
                  // No user was found, do something
             }
        }
    } 
}

然后在你的OtherPage中,只需按照预期从会话中读出它:

if(Session["UserID"] != null)
{ 
     // Read the value from the Session
     var userId = Convert.ToInt32(Session["UserID"]);
     // Do something here
}

同样,您可以轻松创建一个cookie来将您的UserID值保存在多个页面中,或者只需在导航到其他页面时将其附加到QueryString:

Response.Redirect(String.Format("OtherPage.aspx?userId={0}",userId));

然后通过以下方式阅读:

var userId = Convert.ToInt32(Request["userId"]);

答案 2 :(得分:0)

一旦您检索到ID,您就可以将查询字符串上的内容传递给显示用户详细信息的页面,例如http://example.com/userdetails.aspx?id=1

然后userdetails页面可以从查询字符串中检索ID,并显示该用户的相应详细信息。