难道ajax里的updatepanel是奇葩?

Regan-lin 2013-11-02 10:30:21
今天纠结了一天,本来想弄个图片的预览的(asp的),用了个fileupload控件,用个image,一个button控件,在fileupload加载图片获取图片的路径,点击预览都没问题,但是我发现页面刷新了,然后我就想让页面就图片那部分在点击的时候刷新,我就想起了ajax里的updatepanel拉了用了,但是就是不显示图片,然后我断点了试下,原来是fileupload里的filename获取不了,后来我删了updatepanel然后试下又可以获取fileupload里的filename了,然后我google了下都没找到方法,所以想问下是不是updatepanel是个另类的奇葩,另外问下,脚本里fileupload控件的filename要怎么写,是直接fileupload.filename?还是value?求指导
...全文
242 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Regan-lin 2013-11-04
  • 打赏
  • 举报
回复
引用 12 楼 u011130289 的回复:
[quote=引用 7 楼 sp1234 的回复:] 随便搜了一个文章。原理都是类似的:http://www.sj17178.com/7335044.411107.aspx
我又安装这个方法重新搞个web网站试下是可以的,但是当我把textbox换成image的时候又不行了,主页代码还是那样 <script type="text/javascript"> function callBack(fileName, box) { document.getElementById(box).src = fileName; alert('上传完成!'); } </script> <div> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <br /> <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> <ContentTemplate> <iframe id="Iframe1" frameborder="0" name="I1" height="32px" src="fileloadpage.aspx?box=Image1"></iframe> 文件名称: <asp:Image ID="Image1" runat="server" Height="87px" Width="87px" /> </ContentTemplate> </asp:UpdatePanel> <br /> </div> 没变它的就是把textbox替换成image上面的脚本就改了个src->这我很疑惑,image在脚本里的获取图片路径的属性是不是写src,因为我感觉是这出了问题,下面是fileupload页的代码 <div> <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="btn_Upload" runat="server" Text="上传" onclick="btn_Upload_Click" style="height: 21px" /> </div> 控件没变, string box = ""; protected void Page_Load(object sender, EventArgs e) { box = Request.QueryString["box"]; } protected void btn_Upload_Click(object sender, EventArgs e) { string pathname = FileUpload1.FileName; string ipath = Server.MapPath("image") + "\\" + pathname; string photopath = "image\\" + pathname; FileUpload1.SaveAs(ipath); Response.Write("<script>window.top.callBack('" + photopath + "','" + box + "');</script>"); }只是在button事件了点代码检验哪里出错,但是 string pathname = FileUpload1.FileName; string ipath = Server.MapPath("image") + "\\" + pathname; string photopath = "image\\" + pathname; FileUpload1.SaveAs(ipath);这部分代码是没错的我放到另外个web试过,也可以得到图片的路径也执行到response这里传进去的参数也没错,接下来就执行带,但是图片就是显示不出来,所以我就疑惑了image控件在脚本里的图片路径属性难道不是src?[/quote] 就我感觉图片应该是读进去的了,不知道是不是设计图片的伸缩问题
Regan-lin 2013-11-04
  • 打赏
  • 举报
回复
引用 7 楼 sp1234 的回复:
随便搜了一个文章。原理都是类似的:http://www.sj17178.com/7335044.411107.aspx
我又安装这个方法重新搞个web网站试下是可以的,但是当我把textbox换成image的时候又不行了,主页代码还是那样 <script type="text/javascript"> function callBack(fileName, box) { document.getElementById(box).src = fileName; alert('上传完成!'); } </script> <div> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <br /> <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> <ContentTemplate> <iframe id="Iframe1" frameborder="0" name="I1" height="32px" src="fileloadpage.aspx?box=Image1"></iframe> 文件名称: <asp:Image ID="Image1" runat="server" Height="87px" Width="87px" /> </ContentTemplate> </asp:UpdatePanel> <br /> </div> 没变它的就是把textbox替换成image上面的脚本就改了个src->这我很疑惑,image在脚本里的获取图片路径的属性是不是写src,因为我感觉是这出了问题,下面是fileupload页的代码 <div> <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="btn_Upload" runat="server" Text="上传" onclick="btn_Upload_Click" style="height: 21px" /> </div> 控件没变, string box = ""; protected void Page_Load(object sender, EventArgs e) { box = Request.QueryString["box"]; } protected void btn_Upload_Click(object sender, EventArgs e) { string pathname = FileUpload1.FileName; string ipath = Server.MapPath("image") + "\\" + pathname; string photopath = "image\\" + pathname; FileUpload1.SaveAs(ipath); Response.Write("<script>window.top.callBack('" + photopath + "','" + box + "');</script>"); }只是在button事件了点代码检验哪里出错,但是 string pathname = FileUpload1.FileName; string ipath = Server.MapPath("image") + "\\" + pathname; string photopath = "image\\" + pathname; FileUpload1.SaveAs(ipath);这部分代码是没错的我放到另外个web试过,也可以得到图片的路径也执行到response这里传进去的参数也没错,接下来就执行带,但是图片就是显示不出来,所以我就疑惑了image控件在脚本里的图片路径属性难道不是src?
Regan-lin 2013-11-03
  • 打赏
  • 举报
回复
引用 8 楼 u011130289 的回复:
引用 7 楼 sp1234 的回复:
随便搜了一个文章。原理都是类似的:http://www.sj17178.com/7335044.411107.aspx
你上面发的链接帖子我看过了,你说的原理我知道,就是脚本那不过关,下不了手!
我再看看弄iframe可以弄成功不,不可以我就去试下jquery了
  • 打赏
  • 举报
回复
引用 8 楼 u011130289 的回复:
引用 7 楼 sp1234 的回复:
随便搜了一个文章。原理都是类似的:http://www.sj17178.com/7335044.411107.aspx
你上面发的链接帖子我看过了,你说的原理我知道,就是脚本那不过关,下不了手!
只有两、三行js代码而已,所谓“下不了手”,我就无能为力了。你还是需要努力去理解javascript。
  • 打赏
  • 举报
回复
引用 4 楼 u011130289 的回复:
你说的我也想过,就iframe链接的aspx里面放个image和fileuoload控件,但是后台代码怎么写,还是要脚本来解决的好像,点击button里的onclick事件这里的代码下不手,不知道怎么获取aspx里的image和fileuoload控件,后台代码不知道怎么弄
作为一个html规范知识,我们要记住,在IFrame外部是不可能直接访问框架页里边的什么内容的。只能从里边访问外边,而不是能从外边访问里边。
Regan-lin 2013-11-03
  • 打赏
  • 举报
回复
引用 7 楼 sp1234 的回复:
随便搜了一个文章。原理都是类似的:http://www.sj17178.com/7335044.411107.aspx
你上面发的链接帖子我看过了,你说的原理我知道,就是脚本那不过关,下不了手!
  • 打赏
  • 举报
回复
随便搜了一个文章。原理都是类似的:http://www.sj17178.com/7335044.411107.aspx
  • 打赏
  • 举报
回复
嵌入的aspx在获得上传的文件之后,页面重新刷新,则可以通过javascript访问 window.parent.xxxxx() 方法,也就是通知外部aspx说“我上传了数据,数据id是1238427349,请刷新页面”。这样外部的aspx就可以显示一下结果,例如通过修改图片的src来显示上传的大图片,或者通过Ajax来取得数据更新到dom,或者干脆回发页面(例如触发Button的客户端click,或者执行 _postback 之类的)。
Regan-lin 2013-11-03
  • 打赏
  • 举报
回复
引用 4 楼 u011130289 的回复:
[quote=引用 3 楼 sp1234 的回复:] 如果要使用 FileUpload,你可以使用 IFrame,在里边嵌入独立的一个 aspx(页面上只有 FileUpload),这可以做到局部刷新。
你说的我也想过,就iframe链接的aspx里面放个image和fileuoload控件,但是后台代码怎么写,还是要脚本来解决的好像,点击button里的onclick事件这里的代码下不手,不知道怎么获取aspx里的image和fileuoload控件,后台代码不知道怎么弄[/quote] 后台好像不可以的,好像会连带一起整个页面刷新的,有没有脚本大师来个上面的功能的图片预览脚本
Regan-lin 2013-11-03
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
如果要使用 FileUpload,你可以使用 IFrame,在里边嵌入独立的一个 aspx(页面上只有 FileUpload),这可以做到局部刷新。
你说的我也想过,就iframe链接的aspx里面放个image和fileuoload控件,但是后台代码怎么写,还是要脚本来解决的好像,点击button里的onclick事件这里的代码下不手,不知道怎么获取aspx里的image和fileuoload控件,后台代码不知道怎么弄
  • 打赏
  • 举报
回复
如果要使用 FileUpload,你可以使用 IFrame,在里边嵌入独立的一个 aspx(页面上只有 FileUpload),这可以做到局部刷新。
  • 打赏
  • 举报
回复
UpdatePanel控件只支持普通的 Post 回发,不支持 multipart/form-data 方式的回发,因此也不支持 FileUpload控件。
Regan-lin 2013-11-03
  • 打赏
  • 举报
回复

想要的效果就是这样,左边一个fileupload控件,中间一个button控件,右边一个image控件,想fileupload控件选择之后点预览按钮image控件显示选择的图片,不知道是不是ajax奇葩,用updatepanel之后获取不到fileupload的filename属性的,所以现在想写个脚本获取fileupload选择图片的相对路径,其实这就是个图片预览的问题,我google了,但是google的试了都用了,所以现在求个这样功能的脚本,我试写了下
<SCRIPT type=text/javascript>
function LoadPic(obj)
{
var imgsrc = obj.FileUploadPhotoPath.value;
obj.imgaddPhoto.src = imgsrc;
}
</SCRIPT>
但是没反应,估计就是获取的是绝对路径,现在等个脚本大神来帮下

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧