如何在 BasePage 上定义 UploadFile 函数,以便可以在许多 aspx 页面上重用它
Posted
技术标签:
【中文标题】如何在 BasePage 上定义 UploadFile 函数,以便可以在许多 aspx 页面上重用它【英文标题】:How to define an UploadFile function on a BasePage so that it can be reused on many aspx pages 【发布时间】:2015-01-15 07:52:54 【问题描述】:我正在尝试将 UploadFile 函数移动到 BasePage,以便我可以在许多 aspx 页面上重新使用它。我的原代码如下:
上传.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;
...
上传.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 页面上的上传按钮时,我收到“对象引用未设置为对象实例”的错误。
Line 292: if (UploadImages.HasFiles)
任何建议将不胜感激。我认为问题在于如何将上传变量从upload.aspx页面发送到CodeBasePage.cs。
【问题讨论】:
【参考方案1】:所以你在 CodeBasePage
类中缺少一个具体的 FileUpload
实例。
你有什么
public FileUpload UploadImages
仅供参考。您应该在构造函数中或稍后手动将其设置为具体实例。
对于upload.aspx
页面,您的具体实例是
<asp:FileUpload runat="server" ID="UploadImages" />
【讨论】:
有关如何实现该目标的更多详细信息/链接...我仍在学习过程中! 对于这个特定的控件,我将创建一个可重用的用户控件,而不是将其添加到基本页面中,您可以在此article 中找到更多详细信息。为了了解基本页面的内容,您可以通过简单的谷歌搜索找到许多文章。 (迟到的回复,但我希望它有所帮助) 事实上,我也有同样的想法,即使用用户控件是这种情况下的最佳选择。无论如何,谢谢你的提示。以上是关于如何在 BasePage 上定义 UploadFile 函数,以便可以在许多 aspx 页面上重用它的主要内容,如果未能解决你的问题,请参考以下文章
selenium学习中级篇 -20封装BasePage基础类