[ASP.NET] 解决因为使用 updatepanel 导致 fileupload 始终无法获取文件的方法
接手了一个新项目,需要在老项目中增添几个新页面
由于在母版页中的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 始终无法获取文件的方法的更多相关文章
- 解决Visual Studio 2010/2012在调试时lock文件的方法
调试3dsmax插件,有一个避免每次修改插件代码都需要重启3dsmax的方法,就是将导出的核心代码写在一个独立的DLL中,然后在插件代码需要导出时LoadLibrary这个DLL,导出之后再FreeL ...
- 使用UpdatePanel时FileUpload失效的问题
出处:http://www.cnblogs.com/caicainiao/archive/2010/12/08/1900377.html 1.使用UpdatePanel后,FileUpload的Has ...
- 使用UpdatePanel时FileUpload失效的问题!【FileUpload上传文件失败】
1.使用UpdatePanel后,FileUpload的HasFile始终为false,无论你是否选中了上传文件! 方案一:设置ScriptManager 的EnablePartialRenderin ...
- 解决删除/升级Python导致Ubuuntu无法进入桌面的问题
找到问题的原因后于是换个思路,想大概修复了python,Ubuntu进入桌面应该也就没啥问题了.于是重新安装Python发现还是无济于事.也通过/usr/bin/python: can't find ...
- asp.net解决高并发的方案.
asp.net解决高并发的方案. Posted on 2012-11-27 22:31 75077027 阅读(3964) 评论(1) 编辑 收藏 最近几天一直在读代震军的博客,他是 Discuz!N ...
- 讲述Sagit.Framework解决:双向引用导致的IOS内存泄漏(中)- IOS不为人知的Bug
前言: 话说昨晚还是前晚,写了一篇:讲述Sagit.Framework解决:双向引用导致的IOS内存泄漏(上) 文章写到最后时,多了很多莫名奇妙的问题!!! 为了解决了这些莫名奇妙的问题,我又战斗了2 ...
- 讲述Sagit.Framework解决:双向引用导致的IOS内存泄漏(下)- block中任性用self
前言: 在处理完框架内存泄漏的问题后,见上篇:讲述Sagit.Framework解决:双向引用导致的IOS内存泄漏(中)- IOS不为人知的Bug 发现业务代码有一个地方的内存没释放,原因很也简单: ...
- AngularJS进阶(二十八)解决AngualrJS页面刷新导致异常显示问题
解决AngualrJS页面刷新导致异常显示问题 绪 俗话说,细节决定成败,编程亦是如此.编程过程中我们可能会不自觉的忽视一些细节问题,殊不知,这些细节正是导致页面显示出现问题的地方.今略举一例,与君共 ...
- @PathVariable出现点号"."时导致路径参数截断获取不全的解决办法
@PathVariable出现点号"."时导致路径参数截断获取不全的解决办法 比如,我路径是/test/{name},name的值是1.2.3.4,后台用@PathVariable ...
随机推荐
- MongoDB——》聚合查询(project、match、limit、skip、unwind、group、sort)
https://blog.csdn.net/weixin_43453386/article/details/85065043#1_testweightname_id_35 https://blog.c ...
- CSS3 阴影与圆角边框
㈠css3的新特性实际应用 ⑴文本阴影效果,用代码编写的方式实现 ⑵鼠标悬停的动态效果 左侧三幅图片,上面初始状态是没有说明文本的,但把鼠标放在上面的时候,这个图片上面就出现了说明文字 ⑶分栏 ...
- vue 修饰符sync
从 Vue 2.3.0 起,重新引入了 .sync 修饰符,作为一个编译时的语法糖存在.它会被扩展为一个自动更新父组件属性的 v-on 监听器. 实例: 父组件:<syTree :refillD ...
- BZOJ 3589: 动态树 树链剖分+线段树+树链的并
利用树剖序的一些性质~ 这个题可以出到 $\sum k=10^5$ 左右. 做法很简单:每次暴力跳重链,并在线段树上查询链和. 查询之后打一个标记,把加过的链都置为 $0$.这样的话在同一次询问时即使 ...
- Poj 3057 未AC http://poj.org/showsource?solution_id=15175171
<span style="font-size:18px;">#include <iostream> #include <cstdio> #inc ...
- RedisTemplate中zset类型的使用
简述 上一文中简述了使用StringRedisTemplate操作redis中的set类型,今天来记录一下操作zset类型的主要方法 代码 @RunWith(SpringRunner.class) @ ...
- jquery 动态增加删除行
最近写程序,碰巧有动态增加删除行,下面就记录一下 html就不写了,也没有什么,直接上核心了 新增行 function addRow(obj){ //获得table一共有多少行,方便追加的时候给序号赋 ...
- JavaBean,EJB,POJO,Spring Bean 的演进历程
JavaBean Sun公司对类提出的规范:1,类是public的2,有一个无参构造方法3,属性修饰要用private,通过get set操作4,实现Serializable接口5,对事件使用Swin ...
- SQL查询时踩得一些坑
1.左右连接: left join:LEFT JOIN返回左表的全部行和右表满足ON条件的行,如果左表的行在右表中没有匹配,那么这一行右表中对应数据用NULL代替. inner join: 内连接是最 ...
- var $this = $(this)
jQuery: What’s the Difference Between $(this), $this, and this? What about $this? $this is a little ...