VS2013とC#(webforms)を使用してasp.netでWebサイトを開発しています。<asp:FileUpload>
サーバーコントロールを含む、いくつかのユーザー入力を受け入れるページがあります。フォーム全体が更新パネル内にあり、ユーザーがフォームを送信したときにポップアップする進行状況の更新divを表示できます。
更新パネル内にファイルアップロードサーバーコントロールがあると問題が発生することを読みました。その<asp:PostBackTrigger>
ため、アップロードコントロールの.HasFile
プロパティが常にfalseになるとは限らないように、を使用してポストバックを強制しています。
DBの活動に遅延があるときに、サイトを通して、私が使用<asp:UpdatePanel>
して<asp:UpdateProgress>
、いくつかの活動があることをユーザーに表示するようにし、ユーザーのヒットが送信すると変更または再提出されてからフォームを保護するために。それはうまくいきます。
問題は、が表示されないこと<asp:PostBackTrigger>
です<asp:UpdateProgress>
。これにより、フォームは送信後の不要なユーザー入力に対して脆弱になり、ユーザーエクスペリエンスも低下します。だから私はcatch22にいます-ファイルアップロードコントロールが機能しないため、PostBackTriggersを削除できません。また、PostBackTriggersが表示されないため、送信時にUpdateProgressを使用できません。
いくつかのコード:
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<%-- Some irrelevant code left out --%>
<div class="row">
<div class="input-group col-sm-6">
<span class="input-group-addon" style="width: 175px; text-align: right;" id="basic-addon10">Signature</span>
<asp:FileUpload ID="uplSignature" runat="server" CssClass="form-control" />
</div>
<%-- Some irrelevant code left out --%>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnSubmit" />
</Triggers>
<asp:UpdateProgress ID="UpdateProgress" runat="server" AssociatedUpdatePanelID="UpdatePanel1" DisplayAfter="0">
<ProgressTemplate>
<div class="updateProgressMain" style="position: fixed;">
<div class="updateProgressDiv" style="position: fixed;">
<img src="Images/loader.gif" alt="" />
</div>
</div>
</ProgressTemplate>
</asp:UpdateProgress>
これを解決するための最良の方法は何でしょうか?
よろしくお願いします。
編集-問題を解決するために実際に機能したため、Ajax ControlToolkitのAjaxファイルアップロードコントロールの使用を回答として受け入れました。自分のサイトのルックアンドフィールに合わせてスタイルを設定するのが難しいと感じているので、私はそれに興奮していませんが、それは機能します。提案をありがとう。
Ajax ControlToolkitに同梱されているAjaxFileUploadコントロールを見てみましょう。
私は以前に同様の問題を抱えていましたが、ajaxのものが私のために働いたことを覚えています。
あなたはここでそれについてのいくつかの情報を見つけることができます:https://ajaxcontroltoolkit.devexpress.com/AjaxFileUpload/AjaxFileUpload.aspx
Ajax Control Toolkitを入手するには、NuGetで検索してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加