如何在BasePage上定义UploadFile函数,以便可以在许多aspx页面上重用它

时间:2014-11-18 07:41:52

标签: c# asp.net file-upload code-behind app-code

我正在尝试将UploadFile函数移动到BasePage,以便我可以在许多aspx页面上重复使用它。我的原始代码如下:

upload.aspx.cs

public partial class upload : CodeBasePage
{

protected void uploadFile_Click(object sender, EventArgs e)
{
   if (UploadImages.HasFiles)
   { 
   try
   {
     foreach (HttpPostedFile uploadedFile in UploadImages.PostedFiles)
     { 
     //Upload stuff;
     }
   ...

upload.aspx

<asp:FileUpload runat="server" ID="UploadImages" />
<asp:Button runat="server" ID="uploadedFile" Text="Upload" OnClick="uploadFile_Click"/>

到目前为止一切顺利。代码工作正常。

现在我想将uploadFile_Click移动到BasePage(CodeBasePage),以便我可以在许多aspx页面上重复使用它。

我将以下内容移到了CodeBasePage并声明了变量:

CodeBasePage.cs

public Button uploadedFile;
public FileUpload UploadImages;

protected void uploadFile_Click(object sender, EventArgs e)
{
   if (UploadImages.HasFiles)
   { 
   try
   {
     foreach (HttpPostedFile uploadedFile in UploadImages.PostedFiles)
     { 
     //Upload stuff;
     }
   ...

但显然我做错了什么。当我单击aspx页面上的Upload按钮时,出现“对象引用未设置为对象实例”的错误。

Line 292:            if (UploadImages.HasFiles)

任何建议都将不胜感激。我认为问题在于如何将上传变量从upload.aspx页面发送到CodeBasePage.cs。

1 个答案:

答案 0 :(得分:0)

所以你错过了FileUpload课程中的具体CodeBasePage实例。

你有什么

public FileUpload UploadImages

仅供参考。您应该在构造函数中或稍后手动将其设置为具体实例。

对于upload.aspx页面,您的具体实例是

<asp:FileUpload runat="server" ID="UploadImages" />