在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)
提前感谢您的帮助!克里斯。
你可以像这样在页面ViewState中持久化这个变量:
private string fileName
{
get { return ViewState["fileName"] != null ? (string)ViewState["fileName"] : String.Empty; }
set { ViewState["fileName"] = value; }
}
上传文件时将文件名保存为Session
或ViewState
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();
}
实际上这里你可以有大量的变量:
-
你可以从文件上传控制中获得这个值,只需要使用与在Button1Click中使用的相同的方法:
string filename = Path.GetFileName(FileUpload1.FileName);
-
更准确地说,是存储在ViewState,因为它被告知之前
-
如果您想在其他页面使用此功能,只需将此保存到session。