0

UpdatepanelにFileUploadがあります。

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
<Triggers>
    <asp:PostBackTrigger ControlID="SaveButton" />
</Triggers>
<ContentTemplate>
<cc1:TabContainer CssClass="visoft__tab_xpie7" runat="server" ID="tab" ActiveTabIndex="0" Width="100%" Font-Size="11px">
 <cc1:TabPanel runat="server" HeaderText="اطلاعات پایه" ID="TabPanel1">
     <ContentTemplate>
      <div class="row">
       <span style="width: 100px" class="rowtitle">تصویر </span>
        <asp:FileUpload ID="ImageFileUpload" runat="server"/>
        <asp:ImageButton ID="RemoveImageButton" runat="server" ImageUrl="~/images/delete.png" />
      </div>
      <div class="row">
       <span style="width: 100px" class="rowtitle">Category</span>
       <asp:DropDownList ID="CategoryDropDownList" runat="server" Width="200px" AutoPostBack="True" DataTextField="Name" DataValueField="ID" OnSelectedIndexChanged="CategoryDropDownList_SelectedIndexChanged" />
       <asp:RequiredFieldValidator ID="CategoryRFV" runat="server" ControlToValidate="CategoryDropDownList" ForeColor="Red" ValidationGroup="Save" ErrorMessage="مجموعه را انتخاب کنید." Text="*" />
      </div>
      <div class="row" style="height: 300px">
       <span style="width: 100px" class="rowtitle">توضیحات کامل</span>
       <editor:HtmlEditor Style="float: left" runat="server" Width="600px" ID="DescriptionHtmlEditor" />
       <asp:RequiredFieldValidator Text="*" ID="DescriptionRFV" runat="server" ControlToValidate="DescriptionHtmlEditor" ForeColor="Red" ValidationGroup="Save" ErrorMessage="توضیحات را وارد کنید ." />
       </div>
     </ContentTemplate>
    </cc1:TabPanel>
   </cc1:TabContainer> 
   <div class="row" style="text-align: center">
    <asp:Button ID="SaveButton" class="button" Width="100px" OnClick="SaveButton_Click" runat="server" ValidationGroup="Save" Text="ذخیره" />
   </div>
  </ContentTemplate>
  </asp:UpdatePanel>

updatepanelの部分的なポストバックの後でFileUploadFileNameプロパティにアクセスしようとしたとき、それは空でした。

oncangeイベントwitjjavascripでuploadpanelのFilenmeを取得したいのですが、ファイルのフルパスを取得できません。

 function FileChange()
   {
    var filename = document.getElementById('<%= FileNameUpload.ClientID  %>');
    var file = document.getElementById('fileupload');
    filename.value = file.value;
   }

部分的なポストバック後にfileuploadのファイル名を取得するにはどうすればよいですか?

4

1 に答える 1

0

updatepanel の部分的なポストバック後に FileUpload の FileName プロパティにアクセスしようとすると、空でした。

更新パネルは、通常のフォーム送信を単純にインターセプトし、xmlhttp 要求を使用して完全なポストバックを実行します。このため、要素に対して最初に行われた選択はinput:file、最初のポストバックで既に送信されており、後でそれを読み取ることはできません。私が言っていることを証明するために、最初のポストバックでファイル名を試してみると、できることがわかります。

コードを見ると、要素の値をプログラムで設定しようとしているようにも見えますfileupload。これはセキュリティ上の理由からも不可能です。Javascript からユーザーのハード ドライブにアクセスして、ユーザーが Web サイトにアップロードするファイルを決定することはできません。ユーザーがファイルを選択してフォームが送信されると、選択はなくなります。ユーザーは自分でファイルを再選択する必要があります。

UpdatePanels でこれを機能させるために多くのハックを試すことができますが、長い目で見れば最もクリーンなのは jQuery Ajax を使用してこれを実装することです。

これが、あなたのアプローチがうまくいかない理由を明確にするのに役立つことを願っています.

于 2012-12-28T17:10:44.517 に答える