ASP.NET
.NET Framework 中一套用于生成 Web 应用程序和 XML Web 服务的技术。
20 个问题
我在更新面板中使用了 asp.net FileUpload
控件。当我单击上传按钮时,我想在回发后保留所选文件。但是FileUpload 控件的值都消失了,我该怎么实现这个需求?
<asp:UpdatePanel ID="UpdatePanel3" runat="server">
<ContentTemplate>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:RequiredFieldValidator ID="rfvFileupload" ValidationGroup="validate" runat="server" ErrorMessage="* required" ControlToValidate="FileUpload1"></asp:RequiredFieldValidator>
</ContentTemplate>
</asp:UpdatePanel>
你好,
根据你提供的代码,存在以下两个问题:
1.FileUpload 控件不适用于异步回发。因此需要回发才能获取文件。你需要设置上传按钮的触发器,即 <asp:PostBackTrigger >
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:FileUpload ID="fileUpload1" runat="server"></asp:FileUpload>
<asp:Button ID="btnUpload" runat="server" Text="Upload Image"
OnClick="btnUpload_Click" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnUpload" />
</Triggers>
</asp:UpdatePanel>
protected void btnUpload_Click(object sender, EventArgs e)
{
if (fileUpload1.HasFile)
{
var fileName = fileupload1.FileName;
fileUpload1.SaveAs("~/UploadedSources/" + fileName);
}
}
2.如果你需要保留FileUpload 控件的值,您可以将fileupload
对象完全存储在会话中,并在回发后从会话中检索所需的值。就像这样:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["FileUpload1"] == null && FileUpload1.HasFile)
{
Session["FileUpload1"] = FileUpload1;
}
else if (Session["FileUpload1"] != null && (! FileUpload1.HasFile))
{
FileUpload1 = (FileUpload) Session["FileUpload1"];
}
else if (FileUpload1.HasFile)
{
Session["FileUpload1"] = FileUpload1;
}
}
如果答案是正确的解决方案,请单击“接受答案”并请投赞成票。如果您对此答案有其他疑问,请点击“评论”。
注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。
最好的问候