Итак, что я пытаюсь сделать, пользователь выбирает файл для загрузки. Поскольку я только собираюсь принимать изображения, я проверю расширение. Я также хочу ограничить размер файла до 2 Мбайт, поэтому я проверю его (еще не реализованный в коде). Если файл, который они выбрали, проходит, я хочу, чтобы метка говорила "File Accepted" и сохранила информацию о загрузке файла для более позднего нажатия кнопки. Это произойдет, как только пользователь завершит заполнение остальной части формы. В конце концов, я поставлю элемент UpdateProgress на странице, пока он проверяет, разрешен ли файл. Я бы предпочел не возвращать его для этого, так что, если я смогу заставить его работать, это будет здорово. BTW, все это будет нормально работать, если я вынесу ярлык из панели обновлений.
Что произойдет, когда я запустил это, он перейдет в инструкцию else из первого, если и возвращает "Пожалуйста, выберите файл". Это означает, что FileUpload1.HasFile возвращает false. Единственная причина, по которой я вижу, что это происходит, заключается в том, что UpdatePanel не может получить доступ к этой информации из элемента управления FileUpload?
Код за:
Label SubmitButtonLabel2= (Label)UpdatePanel1.FindControl("SubmitButtonLabel");
if (FileUpload1.HasFile)
{
string[] fileName = FileUpload1.FileName.Split('.');
if ((fileName[fileName.Length - 1] == "jpg") ||
(fileName[fileName.Length - 1] == "gif") ||
(fileName[fileName.Length - 1] == "bmp") ||
(fileName[fileName.Length - 1] == "jpeg") ||
(fileName[fileName.Length - 1] == "png"))
{
SubmitButtonLabel2.Text = "File Accepted.";
}
else
{
SubmitButtonLabel2.Text = "File type not allowed. Please choose another.";
}
}
else
{
SubmitButtonLabel.Text = "Please select a file.";
}
Страница:
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="SubmitButton" runat="server" Text="Submit File" OnClick=SubmitButton_Click />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="always">
<ContentTemplate>
<asp:Label ID="SubmitButtonLabel" runat="Server" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="SubmitButton" />
</Triggers>
</asp:UpdatePanel>
</div>
</form>
</body>