我试图在我的网络应用程序中创建用于上传和下载附件的用户控件。
在我的用户控件中,我使用asp.net更新面板上传和下载文件,并在<dive>...</dive>
标签中使用我的用户控件,显示样式为无。
当我使用此用户控件时,我试图设置<dive>...</dive>
标签显示样式以显示用户控件,并且我使用下面的代码在模态弹出模式下显示此用户控件:
<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender" runat="server" CancelControlID="CancelButton" DropShadow="true" PopupControlID="PanelMain" PopupDragHandleControlID="PanelHeader" TargetControlID="btnFileOperation" />
在我的用户控件中,我写下相同的代码:
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:FileUpload ID="fileUploadImage" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Upload Image" OnClick="btnUpload2_Click" />
<br />
<asp:Label ID="lblMessage" runat="server" Text="Image uploaded successfully." Visible="false"></asp:Label><br />
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>
Please wait image is getting uploaded....
</ProgressTemplate>
</asp:UpdateProgress>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnUpload" />
</Triggers>
</asp:UpdatePanel>
但是当我想在代码中访问FileUpload.PostedFile或FileUpload.HasFile属性时(单击上传按钮的事件),这些属性为空。
这个问题可能是什么原因?以及如何解决它?
答案 0 :(得分:0)
我在这个问题上花了好几个小时,终于在一个有五年历史的asp.net论坛帖子上找到了答案:UpdatePanel + FileUpload + PostBackTrigger doesn't seem to work。要将其简化,在我的site.master页面上,<form>
标记只是:
<form id="Form1" runat="server">
2007年的帖子建议将其更改为:
<form id="Form1" method="post" enctype="multipart/form-data" runat="server">
效果很好!我不明白为什么,但确实如此。
我在网上找到的大部分答案 - 包括StackOverflow上的几个答案 - 建议只为更新面板创建一个回发触发器。没有任何变化对我有用。在退出时间前大约五分钟,我在asp.net论坛上找到了这个不起眼的页面。最好的感受之一就是在回家之前解决问题。
我希望这会对你有所帮助。