在webforms c#的不同类中使用变量

本文关键字:变量 同类 webforms | 更新日期: 2023-09-27 18:10:46

我在一些简单的我认为堆栈。

我有以下代码:

public void Button1Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile)
    {
        if (FileUpload1.PostedFile.ContentType == "text/xml")
            {
                    string filename = Path.GetFileName(FileUpload1.FileName);
                    FileUpload1.SaveAs(Server.MapPath("~/") + filename);
                    StatusLabel.Text = "Upload status: File uploaded!";
                    DataSet ds = new DataSet();
                    ds.ReadXml((Server.MapPath(filename)));
                    GridView1.DataSource = ds;
                    GridView1.DataBind();
            }
            else
                StatusLabel.Text = "Only xml files are accepted!";
    }
}
public void Button2_Click1(object sender, EventArgs e)
{
}    

我想让用户执行button2

中的代码
                    DataSet ds = new DataSet();
                    ds.ReadXml((Server.MapPath(filename)));
                    GridView1.DataSource = ds;
                    GridView1.DataBind();

我的问题是变量filename在

之外不可用
public void Button1Click(object sender, EventArgs e)

提前感谢您的帮助!克里斯。

在webforms c#的不同类中使用变量

你可以像这样在页面ViewState中持久化这个变量:

private string fileName
{
    get { return ViewState["fileName"] != null ? (string)ViewState["fileName"] : String.Empty; }
    set { ViewState["fileName"] = value; }
}

上传文件时将文件名保存为SessionViewState

public void Button1Click(object sender, EventArgs e)
{
    ..
    string filename = Path.GetFileName(FileUpload1.FileName);
    ...
    Session["filename"]=filename;
}

代码在Button2点击处理程序,

public void Button2_Click1(object sender, EventArgs e)
{
 if(Session["filename"]!=null)
 { 
  string filename=Session["filename"].ToString();
  DataSet ds = new DataSet();
  ds.ReadXml((Server.MapPath("~/" + filename)));
  GridView1.DataSource = ds;
  GridView1.DataBind();
}  

实际上这里你可以有大量的变量:

  1. 你可以从文件上传控制中获得这个值,只需要使用与在Button1Click中使用的相同的方法:

    string filename = Path.GetFileName(FileUpload1.FileName);
    
  2. 更准确地说,是存储在ViewState,因为它被告知之前

  3. 如果您想在其他页面使用此功能,只需将此保存到session。