问题描述
if(File.Exists(System.Web.HttpContext.Current.Server.MapPath(ImgUpUrl))){ScriptManager.RegisterStartupScript(this.Page,this.Page.GetType(),null,"javascript:confirm('是否覆盖');",true);}
后天判断是否存在提示是否覆盖文件写完发现程序不等前天提示框直接运行完了。。。求解
解决方案
解决方案二:
解决方案三:
js代码在本地执行后端代码在服务器执行,RegisterStartupScript只是给你的html输出插入了一段微软给你定义好的js代码
解决方案四:
web服务器程序本来就是这样啊,只有页面对象运行到Render阶段,输出html给浏览器端,过一会儿浏览器端收到了消息才开始(页面下载和渲染,并)执行这个confirm代码啊。此时当然服务器端早就已经销毁了这个Page对象了。你学习asp.net的时候,没有学过一点原理吗?
解决方案五:
引用3楼sp1234的回复:
web服务器程序本来就是这样啊,只有页面对象运行到Render阶段,输出html给浏览器端,过一会儿浏览器端收到了消息才开始(页面下载和渲染,并)执行这个confirm代码啊。此时当然服务器端早就已经销毁了这个Page对象了。你学习asp.net的时候,没有学过一点原理吗?
这点我知道不够现在我需要弹出提示框问用户是否继续该如何做
解决方案六:
引用2楼rayyu1989的回复:
js代码在本地执行后端代码在服务器执行,RegisterStartupScript只是给你的html输出插入了一段微软给你定义好的js代码
后台进行判断提示用户选择是否继续该如何写?
解决方案七:
我觉得你这个需求本身就很蛋疼对于web应用,用户根本就不应该关心服务器上到底存了什么文件,是否有重名等问题这个跟使用IE的人有一毛钱关系?我想上传个图片,你不重命名一下,而是告诉我,服务器上已经有个同名的文件了,问我是否要覆盖?
解决方案八:
有需要用户确认的内容,全部用JS脚本已经发送到服务器的数据,只返回成功失败或者数据,而不要再问我了行不行
解决方案九:
不管是不是“微软给插入的”,但是机制其实并不是“插入了一段js代码”。如果你以为“前台”跟“后台”是同时执行的,那纯粹是教你asp.net的人故意避而不教你任何实质性的问题、只让你抄一点低级代码。web页面是这样的流程:1.浏览器端提交form-action请求。2.asp.net服务器端处理页面,输出html内容(字节流),其中就包括你推送的这条confirm语句。3.asp.net服务器对于输出内容进行Flush(刷新)然后关闭,这时候浏览器端开始接收数据。4.asp.net页面处理全部结束,Page对象被GC销毁。5.浏览器端下载了所有消息之后,才创建了当前的浏览器页面,你的js代码才被浏览器执行。你编写任何一个传统web程序时,都应该有这个流程概念。
解决方案十:
引用4楼u012228265的回复:
Quote: 引用3楼sp1234的回复:
web服务器程序本来就是这样啊,只有页面对象运行到Render阶段,输出html给浏览器端,过一会儿浏览器端收到了消息才开始(页面下载和渲染,并)执行这个confirm代码啊。此时当然服务器端早就已经销毁了这个Page对象了。你学习asp.net的时候,没有学过一点原理吗?这点我知道不够现在我需要弹出提示框问用户是否继续该如何做
既然你什么都知道,那么你最好就自己去搜索一下我以前对IPostbackEvent机制的回复吧。
解决方案十一:
引用2楼rayyu1989的回复:
js代码在本地执行后端代码在服务器执行,RegisterStartupScript只是给你的html输出插入了一段微软给你定义好的js代码
这样说有歧义。至少并不是给“前台”插入代码,因为前后台不是并行,而是顺序的。
解决方案十二:
引用10楼sp1234的回复:
Quote: 引用2楼rayyu1989的回复:
js代码在本地执行后端代码在服务器执行,RegisterStartupScript只是给你的html输出插入了一段微软给你定义好的js代码这样说有歧义。至少并不是给“前台”插入代码,因为前后台不是并行,而是顺序的。