2017-07-28 6 views
2

これは、ASPXファイルです: -asp:UpdatePanel内のasp:formview内のファイルをアップロードできませんか?

私はその後、EditItemTemplateブロック内に配置すること、すなわちFormViewコントロールの外にして、UpdatePanelの外に外にそれを置くことによって、FileUpload1内のファイルにアクセスしようとしてみたことは何
<ajaxToolkit:ModalPopupExtender ID="ModalProgress" runat="server" TargetControlID="panelUpdateProgress" BackgroundCssClass="modalBackground" PopupControlID="panelUpdateProgress" /> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
<ContentTemplate> 
<asp:FormView ID="formviewReg" runat="server" Width="100%" AllowPaging="false" OnItemUpdating="formviewReg_ItemUpdating"> 
<EditItemTemplate> 
<asp:LinkButton ID="lbtnupdatepersonal" runat="server" OnClick="lbtnupdatepersonal_Click" ValidationGroup="g1">Update</asp:LinkButton> 
<asp:FileUpload ID="FileUpload1" runat="server" /> 
</EditItemTemplate> 
<ItemTemplate> 
<asp:LinkButton ID="lbtneditpersonal" runat="server" OnClick="lbtneditpersonal_Click">Edit</asp:LinkButton> 
//some html controls 
</ItemTemplate> 
</asp:FormView> 
</ContentTemplate> 
</asp:UpdatePanel> 

。しかし、決してFileUpload1.HasFileはtrueを返しません。このプロセスを回避できる方法はありますか?私は、これは、私はaspx.csファイルに使用していますものですlbtnupdatepersonalクリックでFileupload1のファイルにアクセスしたい: -

protected void lbtnupdatepersonal_Click(object sender, EventArgs e) 
    { 

     if (FileUpload1.HasFile)//returns false 
     { 
      ViewState["imageext"] = uploadFile1(FileUpload1.PostedFile, "StudentPhoto/"); 
     } 
     formviewReg.UpdateItem(false); 

    } 
+0

私の.aspvbファイルコードを送信 –

+0

ファイルアップロードコード –

答えて

0

のFileUploadコントロールは、非同期ポストバックを使用してファイルをアップロードするためのUpdatePanelコントロールの内部で動作しません。これは、セキュリティ上の理由から、ファイルのアップロードとファイル操作がクライアント側でデフォルトで制限されているためです。したがって、UpdatePanelで非同期ポストバックを使用してファイルをアップロードすることはできません。

私はそれがこの問題の回避策を提供することを述べて、このサイトを見つけました:FileUpload1.HasFileがTrueを返していません
https://www.codeproject.com/Articles/482800/FileplusUploadplusinplusUpdateplusPanel

0

ファイルをサーバーに送信するには、完全なポストバックを実行する必要があります。ファイルのアップロードコントロールがUpdatePanel内にあるため、ファイルをアップロードすることが制限されています。

はそれを動作させるためにはどちらかあなたは共有のマークアップから のUpdatePanelを削除するか、明示的に FormViewコントロールデータバインドイベントを使用してアップロードをファイルにイベントを登録する必要があります。

protected void formviewReg_DataBound(object sender, EventArgs e) 
{ 
    if (formviewReg.CurrentMode == FormViewMode.Edit) 
    { 
     FileUpload fu = e.Row.FindControl("FileUpload1") as FileUpload; 
     ScriptManager.GetCurrent(this).RegisterPostBackControl(fu); 
    } 
} 

注:あなたはそれを使用する前に、フォーム内の内部スクリプトマネージャを含める必要があります。

<asp:ScriptManager ID="ScriptManager" runat="server"></asp:ScriptManager> 
関連する問題