[ASP.NET]updatepanelでfile uploadが常にファイルを取得できない場合の解決方法

20140 ワード

新しいプロジェクトを引き継いで、古いプロジェクトにいくつかの新しいページを追加する必要があります.
マスターページのupdatepanelがサブページを包んでいるので
同時にupdatepanelはファイルのアップロードをサポートしていないので、追加の設定を追加します.
具体的にはこのブログを参考に
https://www.cnblogs.com/insus/p/3208744.html
 
以下、自分の状況に合わせて設定します
 
フロントエンドコントロールの設定:
マスターページの設定:
asp:ToolkitScriptManagerのAjaxFrameworkModeプロパティをenabledに設定すればよい
1 <asp:ToolkitScriptManager ID="tsm" runat="server" AjaxFrameworkMode="Enabled" AsyncPostBackTimeout="1800" EnablePartialRendering="true" LoadScriptsBeforeUI="true" ScriptMode="Auto">asp:ToolkitScriptManager>

 
サブページの設定:
updatepanelはラベルに含める必要があります.そうしないとエラーが発生します(私のフレームワークが古いか、他の理由かもしれません).
ファイルにアップロードされたコントロールの外側にupdatepanelを追加し、updatemodeをconditionalに設定します.
postbackがファイルをリフレッシュしてファイルが取得されないことを防止するために、アップロード方法を実装するコントロールも追加します.
 1           <td class="td_title" >    td>
 2                 <td class="td_content" colspan="3">
 3                     
 4                     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">                        
 5                         <ContentTemplate>
 6                             <asp:FileUpload ID="SQE_FileUpload" runat="server" /> 
 7                                                         
 8                         ContentTemplate>
 9                         <Triggers>
10                             --//          ,                   --%>
11                             <asp:PostBackTrigger ControlID="SIMP_submit" />
12                         Triggers>
13                     asp:UpdatePanel>
14                 td>

 
バックエンドコード実装:
 1 //       updatepanel , updatepanel      ,     ,     ,    aspx  
 2         protected void SQE_Uploadfiles()//                   
 3         {
 4             #region       
 5             if (SQE_FileUpload.HasFile)//      
 6             {
 7                 string fileName = SQE_FileUpload.PostedFile.FileName;//     
 8                 string fileType = fileName.Substring(fileName.LastIndexOf(".") + 1);//      
 9                 string SUPath = ConfigurationManager.AppSettings["SIMPUserUpload"].ToString().Replace("~/", "");//            
10                 string Newfilefolder = Path.GetFullPath(SUPath + Abnormal_No.Text);//           ,..\Files\SIMPUserUpload\"   "
11                 string NewfileName = Abnormal_No.Text + "." + fileType;//   (   ).(    )
12                 string NewfilePath = Newfilefolder + "\\" + NewfileName;// ..\Files\SIMPUserUpload\"   "\        
13 
14                 if (!Directory.Exists(Newfilefolder))//        ,         
15                 {
16                     try
17                     {
18                         Util.CreateDirectory(Newfilefolder);
19                     }
20                     catch (Exception x)
21                     {
22                         //ShowMessage("       !");
23                         UFstate = "1";
24                         return;
25                     }
26                 }
27 
28                 try
29                 {
30                     SQE_FileUpload.SaveAs(NewfilePath);//         
31                     //ShowMessage("    !");
32                     Fpath = NewfilePath;//    
33                     return;
34                 }
35                 catch (Exception ex)
36                 {
37                     //ShowMessage("     !");
38                     UFstate = "2";
39                     return;
40 
41                 }               
42                 
43             }
44             else
45             {
46                 return;
47                 //ShowMessage("         !");
48                 //Response.Write("

!

");
49 } 50 51 #endregion 52 }

 








アルファベットで分類:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z その他