Как новый веб-новичок .net / C #, меня всегда сбивают с толку, когда я пытаюсь использовать FindControl. Блам - плоский на моем лице. Вот моя текущая проблема 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 # -коде есть код OnClick для объекта fileUpload:
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 - это что-то вроде:
метка thumbnailUploadLabel = DataList1.FindControl ("thumbnailUploadLabel") в качестве метки;
Но, конечно, это выдает ошибку «Ссылка на объект не установлена на экземпляр объекта». Любая помощь очень ценится.
(Я также видел «рекурсивный» код, который должен облегчить использование FindControl. Ха! Я настолько зелен в C #, что даже не знаю, как включить их в свой проект.)
Спасибо всем за внимание.