访问PageLoad之外的字符串值(if(!Page.IsPostBack))



我想访问PageLoadif(!Page.IsPostBack)块之外的字符串值。

我已申报string sap1 public

我的代码是

     public partial class WebForm4 : System.Web.UI.Page
     {
    DateTime d = DateTime.Now;
    string sap = "";
    string sap1;
    protected  void Page_Load(object sender, EventArgs e)
    {
        //DateTime d = DateTime.Now;
        TextBox1.Text = d.ToShortDateString(); 
        if (!Page.IsPostBack)
        {
            string q = d.ToShortDateString();
            string[] separators = { "-", "/" };
            string s = d.ToShortDateString();
            string[] words = s.Split(separators, StringSplitOptions.RemoveEmptyEntries);
            foreach (var word in words)
                sap = sap + word;
            string constr = ConfigurationManager.ConnectionStrings["myString"].ConnectionString;
            using (SqlConnection con = new SqlConnection(constr))
            {

                sap1 = "D" + sap;
                string query = "create table " + sap1 + " (Name varchar(50),ContentType 
       nvarchar(200),Data varbinary(MAX));";
                using (SqlCommand cmd = new SqlCommand(query))
                {
                    cmd.Connection = con;
                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                }
            }
            AddNewRow();
        } 
       protected void Button1_Click(object sender, EventArgs e)
       {
         Response.Write(sap1);
       }
    }

我想访问PageLoad之外的sap1的值。我想用它插入查询。

您需要将sap1的值存储在会话中

Session["sap1"] = sap1;

然后在需要时取回:

protected void Button1_Click(object sender, EventArgs e)
{
    Response.Write(Session["sap1"]);
}

您必须在Page_Load方法之外声明此属性

private string sap1;

然后你可以在全班同学中访问它。但是要小心ASP.NET页面的生命周期。只有在Page_Load之后,才会有值为的sap1。在页面生命周期的早期阶段,它当然是空的。

问题在于if检查if(!Page.IsPostback)。您需要在每个PostBack上计算sapsap1。因此,当你点击按钮时,它将可用。

只需删除条件if(!Page.IsPostback)

最新更新