Page.Session未设置为实例

时间:2014-03-14 19:39:21

标签: c# asp.net custom-server-controls htmltextwriter

我无法理解Page.Request.QueryStringPage.Session的工作原理。如何为此name

指定string
protected override void Render(HtmlTextWriter output)
    {

        SqlConnection sqlConnection = new SqlConnection(connectionString);
        SqlCommand sqlCommand = new SqlCommand();
        StringBuilder stringBuilder1 = new StringBuilder();
        StringBuilder stringBuilder2 = new StringBuilder();
        sqlCommand.Connection = sqlConnection;
        sqlCommand.CommandType = CommandType.StoredProcedure;
        sqlCommand.CommandText = "proc_UserBids";
        sqlCommand.CommandTimeout = 1000;
        string str = this.Page.Request.QueryString["name"] == null ? this.Page.Session["name"].ToString() : ((object)this.Page.Request.QueryString["name"]).ToString();
        if (!(str == ""))
        {
      //Do Something
       }
}

我得到的错误是:

  

异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。

 string str = this.Page.Request.QueryString["name"] == null ? this.Page.Session["name"].ToString() : ((object)this.Page.Request.QueryString["name"]).ToString();

1 个答案:

答案 0 :(得分:1)

您必须将一些值设置为session name

示例(vb.net):

Session.Add("name","some string")

然后您可以在任何页面中使用此Session("name")

例如在其他一些页面中:Dim str As String = Session("name")

如果您想使用QueryString传递一些值,从一个页面到另一个页面然后使用下面的代码。 示例: deafult.aspx

Response.Redirect("otherpage.aspx?name=Some string")

otherpage.aspx(代码背后):

Request.QueryString("name")

我希望这就是你所需要的。