接手了一个新项目,需要在老项目中增添几个新页面

由于在母版页中的updatepanel包住了子版页

同时updatepanel并不支持文件上传,因此要额外增加一些设置

具体的情况可以参考这篇博客

https://www.cnblogs.com/insus/p/3208744.html

下面针对我自己的情况进行设置

前端控件的设置:

母版页的设置:

将 asp:ToolkitScriptManager 的 AjaxFrameworkMode 属性设置为 enabled 即可

 <asp:ToolkitScriptManager ID="tsm" runat="server" AjaxFrameworkMode="Enabled" AsyncPostBackTimeout="1800" EnablePartialRendering="true" LoadScriptsBeforeUI="true" ScriptMode="Auto"></asp:ToolkitScriptManager>

子版页的设置:

updatepanel要被包含在<td>标签内,否则会出错(可能是我的框架太老或者其他原因)

额外的再在文件上传的控件外层套一个updatepanel,并将其updatemode设置为conditional

同时加入<trigger>指向实现上传方法的控件,防止因为postback将文件给刷新掉从而获取不到文件

           <td class="td_title" >文件上傳</td>
                 <td class="td_content" colspan="3">
                     <!--加入這個UpdatePanel防止被PostBack刷掉文件,導致獲取不到文件--><!--可以指向UpdatePanel外的控件-->
                     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                         <ContentTemplate>
                             <asp:FileUpload ID="SQE_FileUpload" runat="server" /> 

                         </ContentTemplate>
                         <Triggers>
                             <%--//可以指向模板外的控件,該功能是防止回傳刷新后導致獲取不到文件--%>
                             <asp:PostBackTrigger ControlID="SIMP_submit" />
                         </Triggers>
                     </asp:UpdatePanel>
                 </td>

后端代码实现:

 //整個子版都處於updatepanel中,而updatepanel并不支持上傳,要另行設置,已設置完畢,具體參考aspx頁面
         protected void SQE_Uploadfiles()//將文件上傳的功能封裝在這裡進行調用即可
         {
             #region 上傳文件事件
             if (SQE_FileUpload.HasFile)//判斷有無文件
             {
                 string fileName = SQE_FileUpload.PostedFile.FileName;//獲取文件名
                 );//獲取文件類型
                 string SUPath = ConfigurationManager.AppSettings["SIMPUserUpload"].ToString().Replace("~/", "");//獲取服務器存放文件的路徑
                 string Newfilefolder = Path.GetFullPath(SUPath + Abnormal_No.Text);//轉換成正確的文件夾路徑,..\Files\SIMPUserUpload\"流水號"
                 string NewfileName = Abnormal_No.Text + "." + fileType;//文件名(流水號).(文件類型)
                 string NewfilePath = Newfilefolder + "\\" + NewfileName;//在..\Files\SIMPUserUpload\"流水號"\文件夾中放入文件

                 if (!Directory.Exists(Newfilefolder))//檢查有無該文件夾,如果沒有就自動創建
                 {
                     try
                     {
                         Util.CreateDirectory(Newfilefolder);
                     }
                     catch (Exception x)
                     {
                         //ShowMessage("創建文件夾失敗!");
                         UFstate = ";
                         return;
                     }
                 }

                 try
                 {
                     SQE_FileUpload.SaveAs(NewfilePath);//存儲文件到該路徑下
                     //ShowMessage("上傳成功!");
                     Fpath = NewfilePath;//回傳路徑
                     return;
                 }
                 catch (Exception ex)
                 {
                     //ShowMessage("上傳失敗 !");
                     UFstate = ";
                     return;

                 }               

             }
             else
             {
                 return;
                 //ShowMessage("请选择要上传的文件!");
                 //Response.Write("<p >请选择要上传的文件!</p>");
             }

             #endregion
         }

[ASP.NET] 解决因为使用 updatepanel 导致 fileupload 始终无法获取文件的方法的更多相关文章

  1. 解决Visual Studio 2010/2012在调试时lock文件的方法

    调试3dsmax插件,有一个避免每次修改插件代码都需要重启3dsmax的方法,就是将导出的核心代码写在一个独立的DLL中,然后在插件代码需要导出时LoadLibrary这个DLL,导出之后再FreeL ...

  2. 使用UpdatePanel时FileUpload失效的问题

    出处:http://www.cnblogs.com/caicainiao/archive/2010/12/08/1900377.html 1.使用UpdatePanel后,FileUpload的Has ...

  3. 使用UpdatePanel时FileUpload失效的问题!【FileUpload上传文件失败】

    1.使用UpdatePanel后,FileUpload的HasFile始终为false,无论你是否选中了上传文件! 方案一:设置ScriptManager 的EnablePartialRenderin ...

  4. 解决删除/升级Python导致Ubuuntu无法进入桌面的问题

    找到问题的原因后于是换个思路,想大概修复了python,Ubuntu进入桌面应该也就没啥问题了.于是重新安装Python发现还是无济于事.也通过/usr/bin/python: can't find ...

  5. asp.net解决高并发的方案.

    asp.net解决高并发的方案. Posted on 2012-11-27 22:31 75077027 阅读(3964) 评论(1) 编辑 收藏 最近几天一直在读代震军的博客,他是 Discuz!N ...

  6. 讲述Sagit.Framework解决:双向引用导致的IOS内存泄漏(中)- IOS不为人知的Bug

    前言: 话说昨晚还是前晚,写了一篇:讲述Sagit.Framework解决:双向引用导致的IOS内存泄漏(上) 文章写到最后时,多了很多莫名奇妙的问题!!! 为了解决了这些莫名奇妙的问题,我又战斗了2 ...

  7. 讲述Sagit.Framework解决:双向引用导致的IOS内存泄漏(下)- block中任性用self

    前言: 在处理完框架内存泄漏的问题后,见上篇:讲述Sagit.Framework解决:双向引用导致的IOS内存泄漏(中)- IOS不为人知的Bug 发现业务代码有一个地方的内存没释放,原因很也简单: ...

  8. AngularJS进阶(二十八)解决AngualrJS页面刷新导致异常显示问题

    解决AngualrJS页面刷新导致异常显示问题 绪 俗话说,细节决定成败,编程亦是如此.编程过程中我们可能会不自觉的忽视一些细节问题,殊不知,这些细节正是导致页面显示出现问题的地方.今略举一例,与君共 ...

  9. @PathVariable出现点号"."时导致路径参数截断获取不全的解决办法

    @PathVariable出现点号"."时导致路径参数截断获取不全的解决办法 比如,我路径是/test/{name},name的值是1.2.3.4,后台用@PathVariable ...

随机推荐

  1. Javascript实现图片点击弹出

    一直想给安装一个缩略图点击弹出的插件,但是找了找几乎都是用的php来做的,插件的使用和安装极其繁琐,于是上网查了些demo,自己实现了一个纯js的图片弹出插件. 实现的思路是通过编写hook图片的on ...

  2. 对React的研究-------------引用

    DOM 的全称是 Document Object Model (文档对象模型) 响应式 UI const ThinkerWithHat = ({ hat }) => (  <div> ...

  3. Java中接口与抽象类的异同

    定义(以下是百度百科中的定义): Java接口:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具 ...

  4. SpringBoot2.0集成Shiro

    1.shiro的三个核心概念: 1)Subject:代表当前正在执行操作的用户,但Subject代表的可以是人,也可以是任何第三方系统帐号.当然每个subject实例都会被绑定到SercurityMa ...

  5. Java多线程和并发(四),线程返回值获取方式和Callable接口

    目录 1.主线程等待法 2.使用Thread类的join()阻塞当前线程,等待子线程执行完毕 3.通过Callable接口实现:通过FutureTask Or线程池获取 四.线程返回值获取方式和Cal ...

  6. HDU1257--最少拦截系统(DP)

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...

  7. [CSP-S模拟测试]:午餐(贪心+最短路)

    题目传送门(内部题115) 输入格式 第一行两个正整数$n,m$. 接下来$m$行,每行$4$个正整数$u_j,v_j,L_j,R_j$. 接下来一行$n$个数,若第$i$个数为$1$,则$i$号同学 ...

  8. 个推CTO深度解析数据智能之多维度分析系统的选型方法

    引言 前文回顾:[<数据智能时代来临:本质及技术体系要求>][2]作为本系列的第一篇文章,概括性地阐述了对于数据智能的理解以及推出了对应的核心技术体系要求: 数据智能就是以数据作为生产资料 ...

  9. sql server关键字大全

    保留关键字 Microsoft® SQL Server™ 2000 使用保留关键字定义.操作和访问数据库.保留关键字是 SQL Server 使用的 Transact-SQL 语言语法的一部分,用于分 ...

  10. LeetCode 116/117. 填充同一层的兄弟节点(Populating Next Right Pointers in Each Node)

    题目描述 给定一个二叉树 struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; } 填充 ...