C# FileUpload+UpdatePanel在第一次单击时不起作用

C# FileUpload+UpdatePanel在第一次单击时不起作用,c#,asp.net,C#,Asp.net,这不仅仅是另一个FileUpload+UpdatePanel问题 正如许多类似文章所述,我的表单上有一个UpdatePanel和一个FileUpload控件。我还为我的上传按钮设置了一个PostBackTrigger。 它起作用了。问题是它在第一次点击时永远不会起作用。即: 我点击浏览,选择我的文件,按上传。fupld.HasFile=false没有发生任何事情 我再次点击浏览,选择任何相同或另一个文件,按下上传,一切正常 <asp:UpdatePanel ID="upGeneral" r

这不仅仅是另一个FileUpload+UpdatePanel问题

正如许多类似文章所述,我的表单上有一个UpdatePanel和一个FileUpload控件。我还为我的上传按钮设置了一个PostBackTrigger。 它起作用了。问题是它在第一次点击时永远不会起作用。即:

我点击浏览,选择我的文件,按上传。fupld.HasFile=false没有发生任何事情

我再次点击浏览,选择任何相同或另一个文件,按下上传,一切正常

<asp:UpdatePanel ID="upGeneral" runat="server" >
   <ContentTemplate>
       ...
       <table id="tabPage10" runat="server" visible="false" width="100%" >
          <tr>
              ...
              <td>
                  <asp:FileUpload ID="fupld" runat="server" Width="80%" />
                  <asp:ImageButton ID="ibtnUpld" runat="server" onclick="ibtnUpld_Click" />
              <td>
              ...
          <tr>
       ...
   </ContentTemplate>
   <Triggers>
      <asp:PostBackTrigger ControlID="ibtnUpld" />
   </Triggers>
</asp:UpdatePanel>
我四处寻找答案,但这确实是一种奇怪的行为。到目前为止运气不好

有什么想法吗


多亏了

在部分页面呈现期间,FileUpload控件设计为仅在回发场景中使用,而不是在异步回发场景中使用

您可以使用AjaxControlToolkit中的控件

<asp:AsyncFileUpload runat="server" ID="asyncFileUpload" Width="400px" ThrobberID="imageThrobber"
   OnClientUploadStarted="uploadStarted" OnClientUploadError="uploadError"
   ClientIDMode="AutoID" PersistFile="true" PersistedStoreType="Session" />

我从来没有遇到过任何问题。

嗯,FileUpload控件设计为仅在回发场景中使用,而不是在部分页面呈现期间的异步回发场景中使用

您可以使用AjaxControlToolkit中的控件

<asp:AsyncFileUpload runat="server" ID="asyncFileUpload" Width="400px" ThrobberID="imageThrobber"
   OnClientUploadStarted="uploadStarted" OnClientUploadError="uploadError"
   ClientIDMode="AutoID" PersistFile="true" PersistedStoreType="Session" />
我从来没有遇到过任何问题。

改变

Visible ="false"

并将其从代码隐藏中更改。 如果设置Visible=false,控件实际上不会呈现为HTML。要将其呈现为HTML,请使用style=display:none代替Visible=false

Visible ="false"

并将其从代码隐藏中更改。
如果设置Visible=false,控件实际上不会呈现为HTML。要将其呈现为HTML,请使用style=display:none而不是Visible=false

和Post-back触发器,我必须在代码隐藏中使用以下代码行:

Page.Form.Enctype = "multipart/form-data";
而且这个效果非常好


多亏了带有回发触发器的链接-.

中的解决方案,我不得不在代码隐藏中使用以下代码行:

Page.Form.Enctype = "multipart/form-data";
而且这个效果非常好

感谢链接中的解决方案-