【发布时间】:2010-10-17 07:05:52
【问题描述】:
所以我想做的是让用户选择要上传的文件。由于我只接受图像,我将测试扩展。我还想将文件大小限制在 2mb 以下,所以我将对其进行测试(尚未在代码中实现)。如果他们选择的文件通过,那么我希望标签显示“文件已接受”,并存储文件上传信息以供稍后单击按钮。一旦用户填写完表格的其余部分,就会发生这种情况。最后,我将在页面上放置一个 UpdateProgress 控件,同时检查文件是否被允许。我宁愿不为此发回它,所以如果我能让它工作,那就太好了。顺便说一句,如果我将标签从更新面板中取出,这一切都会正常工作。
当我运行它时会发生什么,它会转到第一个 if 的 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>
【问题讨论】: