【发布时间】:2010-10-18 22:33:02
【问题描述】:
作为一个新的 .net/C# web 初学者,当我尝试使用 FindControl 时,我总是被绊倒。 Blam-flat 在我的脸上。这是我当前的 FindControl 问题:
我有一个 .aspx 页面和表单,然后是 ajax updatePanel,在其中有我的 DataList (DataList1),它有一个 EditItemTemplate: 具有以下内容:
<EditItemTemplate>
<asp:Label ID="thumbnailUploadLabel" runat="server" text="Upload a new thumbnail image:"/><br />
<asp:FileUpload ID="thumbnailImageUpload" runat="server" />
<asp:Button ID="thunbnailImageUploadButton" runat="server" Text="Upload Now" OnClick="thumbnailUpload"/><br />
</EditItemTemplate>
在我后面的 C# 代码中,我有 fileUpload 对象的 OnClick 代码:
protected void thumbnailUpload(object s, EventArgs e)
{
if (thumbnailImageUpload.HasFile)
{
//get name of the file & upload
string imageName = thumbnailImageUpload.FileName;
thumbnailImageUpload.SaveAs(MapPath("../../images/merch_sm/" + imageName));
//let'em know that it worked (or didn't)
thumbnailUploadLabel.Text = "Image " + imageName + "has been uploaded.";
}
else
{
thumbnailUploadLabel.Text = "Please choose a thumbnail image to upload.";
}
所以我当然会为 FileUpload 和 Label 获得“对象引用未设置为对象的实例”。
在 OnClick 事件中处理这些控件之前,找到这些控件的正确语法是什么?
我使用 FindControl 的唯一方法是:
label thumbnailUploadLabel = DataList1.FindControl("thumbnailUploadLabel") as Label;
但这当然会引发“对象引用未设置为对象的实例”错误。非常感谢任何帮助。
(我还看到了“递归”代码,它可以让 FindControl 的使用变得更容易。哈!我对 C# 非常熟悉,以至于我什至不知道如何将它们合并到我的项目中。)
感谢大家观看本文。
【问题讨论】:
标签: file-upload datalist findcontrol edititemtemplate