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

时间:2011-10-10 09:33:58

标签: c# asp.net visual-studio-2008 variables webforms

我认为我是一个简单的堆栈。

我有以下代码:

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();

我的问题是变量文件名在

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

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

3 个答案:

答案 0 :(得分:2)

您可以将变量保存在ViewState页面中,如下所示:

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

答案 1 :(得分:0)

在上传文件时将文件名保存到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();
}  

答案 2 :(得分:0)

实际上,你可以拥有大量的变种:

  1. 您可以从文件上传控件获取此值,只需使用与Button1Click中使用的方法相同的方法:

    string filename = Path.GetFileName(FileUpload1.FileName);
    
  2. 更准确地说,是按照之前的说法存储在ViewState中。

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