0

内部に FileUpload コントロールがある UpdatePanel があります。人々がこれに問題を抱えていることは知っていますが、ほとんどの問題は AsyncPostBackTrigger を使用しようとしたことに起因しているようです。私はすでに一般的なアドバイスを受けており、単純な PostBackTrigger を使用しています。これは FireFox、Chrome では機能しますが、IE では機能しません。

これが私のセットアップです:

<asp:Panel runat="server" ID="Panel1" Width="100%">
            <asp:UpdatePanel runat="server" ID="updRouteGroup" UpdateMode="Conditional">
              <Triggers>
                <asp:PostBackTrigger ControlID="btnOnHold"/>
              </Triggers>

              <ContentTemplate>        
               <asp:Panel ID="pnlImpExcel" runat="Server" >
              <div style="width:100%">
               <table colspan="0" width="100%" cellpadding="0" cellspacing="0" border="1">
                  <tr>
                     <th colspan="3">
                        On Hold Music
                     </th>
                  </tr>
                  <tr>                  
                     <td align="left" valign="middle" width="600px">
                        <input type="button" value="Browse" id="browse" class="button" /> Current File: <asp:Label runat="server" class="button" ID="lblOnHoldFile" />   
                     </td>                  
                     <td align="right" valign="middle">
                        Enabled: <asp:CheckBox ID="cbOnHold" runat="server" />    &nbsp;&nbsp;
                        <asp:FileUpload ID="filOnHold" runat="server" style="visibility:hidden;width:0px;" onChange="callme(this)"/>
                        <asp:Button ID="btnOnHold" runat="server" style="margin-right:7px;width:87px;" Text="Save" CssClass="button" OnClick="btnSaveOnHold_OnClick" />         
                     </td>
                  </tr>
                  <tr><td colspan ="2" align="center"><asp:Label runat="server" ID="lblUploadError" style="color: Red;" Visible="false" /></td></tr>
               </table> 

               </div>
               </asp:Panel> 
               </ContentTemplate> 
            </asp:UpdatePanel> 
            </asp:Panel>

そして背後にあるコード:

protected void btnSaveOnHold_OnClick(object sender, EventArgs e)
{
    //Misc unrelated stuff

    if (filOnHold.HasFile)
    {
        //Process file, do other stuff
        //However, this is ALWAYS FALSE.
    }

    //Misc unrelated stuff
}

そして、ここにjs関数があります:

   function callme(oFile) {
      window.alert(oFile.value);
      document.getElementById('<%= lblOnHoldFile.ClientID %>').innerText = oFile.value;
   }

提案どおりにこれを行っているようですが、AsyncPostBackTrigger を使用していなくても、HasFile は常に false です。

誰もこれに遭遇したことがありますか?ありがとう。

4

0 に答える 0