内部に 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" />
<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 です。
誰もこれに遭遇したことがありますか?ありがとう。