繁体   English   中英

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

[英]How can I pass a file/file path from one Button_Click event to another in C#?

我的webform中有一个fileupload控件(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??

    }

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

在第一个按钮(在我的情况下是btn_open_Click)中,添加:

Session["myXlsPath"] = ExcelFilePath;

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

在您要传递文件路径的按钮上(在我的情况下为btn_edit_Click),添加:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM