我在使用FileUpload控件时遇到了一些问题,想知道是否能够得到一些帮助。
我的页面上有一个FileUpload控件和一个下拉列表。
因此,用户浏览到他们想要的文件,然后从下拉列表中选择选项(这将启用页面上还有的一些复选框,取决于他们在下拉列表中的选择)。这将导致FileUpload控件变为空,并且现在用户必须再次浏览到他们想要的文件。
有没有什么方法可以防止FileUpload控件在PostBack期间丢失其内容?
我在使用FileUpload控件时遇到了一些问题,想知道是否能够得到一些帮助。
我的页面上有一个FileUpload控件和一个下拉列表。
因此,用户浏览到他们想要的文件,然后从下拉列表中选择选项(这将启用页面上还有的一些复选框,取决于他们在下拉列表中的选择)。这将导致FileUpload控件变为空,并且现在用户必须再次浏览到他们想要的文件。
有没有什么方法可以防止FileUpload控件在PostBack期间丢失其内容?
所以,如果我理解正确的话,下拉框的autopostback属性被设置为true,您正在检查下拉框的值来对复选框进行默认更改?
相反,尝试使用客户端脚本来完成您的想法。
http://forums.asp.net/t/1125781.aspx
从Jessica Cao的帖子中,其中还包含一个代码示例:防止上传控件在回传时丢失文件的简单解决方案是将上传控件放在 .aspx 页面的 update panel 控件之外。换句话说,将可能触发回传的所有输入控件放在一个更新面板内。
例如:
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<ajax:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></ajax:ToolkitScriptManager>
<table>
<tr>
<td>
<asp:UpdatePanel runat="server" ID="Up_LeaveDetails" UpdateMode="Always">
<ContentTemplate>
<asp:DropDownList ID="DDl_LeaveType" runat="server" CssClass="textfield" Width="150" AutoPostBack="true" OnSelectedIndexChanged="DDl_LeaveType_SelectedIndexChanged">
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
</td>
<td>
<asp:FileUpload ID="UploadCertificate" runat="server" />
</td>
</tr>
</table>
</asp:Content>
我将自动回发控件包裹在一个asp:updatepanel中,这样做就解决了问题,但验证失败除外。
每当有一个postback时,您必须检查是否还有来自客户端的文件并保存它。但是您将无法在客户端上重新填充输入框。我建议您最好隐藏文件上传控件(除非您允许多个文件上传),并在其旁边显示带有复选标记的文件名。类似于GMail,当您向电子邮件消息上传文件时。
原因是安全问题,正如其他人所指出的。
我还会禁用任何自动postbacks,因为如果上传文件大小足够大,下拉列表更改可能会对客户端产生永恒的影响。
你不能这样做。一个简单的解决方案是转移到 Ajax 文件控件。