0

私の質問は簡単に答えることができます。

最初はAJAXパネルで使用されなかったファイルアップロードコントロールを使用して単純なフォームを作成していますが、変更されていないコードがFileUploadコントロールのコンテンツを見つけられない理由を理解できません。

<asp:Panel ID="pnlUpload" runat="server" class="workerDetailsPanelLeft" Visible="true">

<h3 class="titleHighlightStyle">Probation Documents</h3><br />
<table cellspacing="0">
<tr>
<td class="standardLabel" valign="top">Current Documents</td>
<td colspan="2">
<asp:ListBox ID="lstDocs" runat="server" Width="200px"></asp:ListBox>
</td>
</tr>
<tr>
<td>
&nbsp;
</td>
<td>
<asp:ImageButton ID="btnSelect" runat="server" SkinID="selectprobationdoc"/>
</td>
<td class="standardLabel" style ="width:200px">Select documents</td>
</tr>
<tr>
<td>
&nbsp;
</td>
</tr>
<tr>
<td class="standardLabel">Upload Documents</td>
<td colspan="2">
<asp:FileUpload ID="uplDoc" runat="server" Height="22px" Width="200px"/> 
</td>
</tr>
<tr>
<td>
&nbsp;
</td>
<td>
<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" CausesValidation="False" />
</td>
</tr>
<tr>
<td>
&nbsp;
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblUploadError" runat="server" Text="Probation document required" ForeColor="Red" Visible="false"></asp:Label> 
</td>
</tr>
</table>             
</asp:Panel>

空白を削除したフォーマットはご容赦ください!!

マークアップがこのようになっていて、FileUploadで.HasFile()を呼び出すと、null値が返されますか?

以下を追加すると

<asp:UpdatePanel ID="ContentPanel" UpdateMode="Conditional" runat="server" ChildrenAsTriggers="true">
<Triggers>
<asp:PostBackTrigger ControlID="btnSave" />
</Triggers>
<ContentTemplate>
  *Markup as above*

コントロールの内容を取得できます。ファイルアップロードコントロールを備えたAjax更新パネルに問題があり、解決策はポストバックトリガーを追加することであると理解していますが、このマークアップから、ファイルが見つからない理由を誰かが確認できますか?

            if (this.uplDoc.HasFile)
        {
            String fileExtension = System.IO.Path.GetExtension(uplDoc.FileName).ToLower();
            String validExt = sAllowedExt;

            if (validExt.IndexOf("," + fileExtension + ",") != -1)
            {
                if (this.uplDoc.FileBytes.Length >= 0)
                {
                    return string.Empty;
                }
                else
                {
                    return "PROC0003";  //Invalid File Size            
                }
            }
            else
            {
                return "PROC0002"; //Invalid file type        
            }
        }

上記はチェックの背後にある最初のコードです。これは、更新パネルの追加から変更されることはありません。

誰かが私が見逃したことを理解するのを手伝ってもらえますか?

ありがとう

4

1 に答える 1

0

答えは簡単でしたが、

コンテンツ ページをホストするマスター ページは、これらのページを更新パネルにラップするため、コードがファイル アップロード コントロールのコンテンツを取得できなかった理由は、完全なポストバックではなく非同期ポストバックを実行していたためです。

とにかくありがとう@シャイ

于 2012-07-19T11:42:03.977 に答える