如何在C#中将文件/文件路径从一个Button_Click事件传递到另一个事件?

时间:2019-03-21 16:31:50

标签: c# excel file

我的网络表单中有一个文件上传控件(FileUpload1),用于加载excel文件。我使用名为btn_open的按钮在单击时在gridview中显示它。 我还使用FileUpload1.SaveAs()方法将文件保存在服务器文件夹中。

现在,我还有另一个名为btn_edit的按钮,单击该按钮需要使用相同的按钮 我刚刚加载以执行另一组操作的文件。

如何将此文件/文件路径从btn_open_Click传递到btn_edit_Click?我不想在代码上指定确切的位置。我将多次打开新的excel文件,因此我不想为每个新文件指定服务器的文件路径,这需要以编程方式进行。另外,如果可能的话,我想避免使用Interop。

以下代码片段可能使我想要做的事情更加清楚。

protected void btn_open_Click(object sender, EventArgs e)
   {
         string fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName);
         if (fileExtension.ToLower() == ".xlsx" || fileExtension.ToLower() == ".xls")
            {
                string path = Path.GetFileName(FileUpload1.FileName);      //capture the file name of the file I have uploaded
                path = path.Replace(" ", "");                              // if there is any spacing between the file name it will remove it 
                FileUpload1.SaveAs(Server.MapPath("~/ExcelFile/") + path); //saves to Server folder called ExcelFile
                String ExcelPath = Server.MapPath("~/ExcelFile/") + path; // Returns the physical file path that corresponds to the specified virtual path. 
                    .   
                    .
                    *code to display it in gridview*
                    .
                    .
               }
            else
                {
                      Console.Writeline("File type not permissible");
                }
   }

protected void btn_edit_Click(object sender, EventArgs e)
   {

    //HOW DO I PASS THE ABOVE FILE HERE PROGRAMATICALLY WITHOUT SPECIFYING IT'S EXACT LOCATION ON THE SERVER??

    }

1 个答案:

答案 0 :(得分:0)

使用Session变量可以帮助我解决问题。希望它将对可能遇到类似问题的其他人有所帮助。

在第一个按钮(以我为例btn_open_Click)上,添加:

Session["myXlsPath"] = ExcelFilePath;

注意:“ myXlsPath”只是我为Session变量创建的名称。 ExcelFilePath是我要传递给另一个按钮的excel文件的路径。

在您要将文件路径传递到的按钮上(以我为例btn_edit_Click),添加:

string ExcelFilePath = (string)Session["myXlsPath"];