为啥在C#中用Response.Write("<script>alert('内容')</script>")时,当弹出提示框是,网页其

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥在C#中用Response.Write("<script>alert('内容')</script>")时,当弹出提示框是,网页其相关的知识,希望对你有一定的参考价值。

为什么在C#中用Response.Write("<script>alert('内容')</script>")时,当弹出提示框是,网页其他内容没了,当点击过后才会出现以前的内容

因为在使用Js弹出提示框之后,当前页面的所有动作均会暂停,不管当前在干什么。
而Response.Write()是个服务器事件,也就是说在处理这个事件后页面将会进行刷新。
这就造成了这个现象,因为页面刷新后,会首先处理Response.Write(),向浏览器输出"<script>alert(\'内容\')</script>"。由于这是一段可执行的Js代码,所以浏览器紧接着就执行了它,随后弹出提示框,造成动作暂停。 后面的页面显示操作自然也就停住了。
参考技术A 就是这样的
你js是从服务器发送到客户端的,处于aspx生命周期的前办部分,还没有服务器返回的加载html文件

建议你好好看看asp.net页面的生命周期
参考技术B 这个跟asp.net的web开发的机制有关系,你可以尝试通过Ajax的方式,
在页面上添加一个ScriptManager和一个UpdatePanel控件
然后通过ScriptManager注册脚本发送到客户端,应该在弹出提示框的同时,网页上仍然显示
参考技术C 因为阻塞了,如果不阻塞的话可以在网页上用jsp写弹出小窗体

在asp.net中用response.write方法输出Javascript弹出模态对话框,怎么解决父窗口空白的问题!

我用Menu控件做一个菜单条,当点击某个菜单时想弹出一个模态窗口!我的做法是在菜单点击的消息响应方法当中用写了这么一条代码:Response.Write("<script type='text/javascript'>window.showModalDialog('ModeDialog.aspx','','dialogWidth=300px;dialogHeight=400px;resizable:yes');</script>");
可是在运行的时候,虽然对模态话框弹出来了,但是父窗口当中的所有内容都变在空白了。而只有在当关闭弹出的对话框时,父窗口当中的内容才会显示出来!而我想要的是,在弹出模态对话框的同时,父窗口当中的内容也存在!
请问各位高手帮帮忙!谢谢!

最好不要用
Response.Write("<script type='text/javascript'>window.showModalDialog('ModeDialog.aspx','','dialogWidth=300px;dialogHeight=400px;resizable:yes');</script>");
因为Response.Write输出来的会破坏页面,如果你要是想实现那个效果用这个:
this.Page.ClientScript.RegisterStartupScript("typeof(string)","","脚本",true);追问

谢谢你,老兄!但是我试过了,为什么不起作用呢???我依照你的建议,最后改为:
Page.ClientScript.RegisterStartupScript(typeof(string),"","" +
"window.showModalDialog('ModeDialog.aspx','','dialogWidth=300px;dialogHeight=400px;resizable:yes');" +
"",true);
但是在运行它就在本页面当中显示了几个“/】】”!

追答

你写错了啊!
Page.ClientScript.RegisterStartupScript(typeof(string),"","这里面直接写js",true);
比如说:
Page.ClientScript.RegisterStartupScript(typeof(string),"","alert('111111');",true);

追问

哦,谢谢!果然起作用。但是在之前,我设置了菜单控件水平方式排列的。但是在对话框弹出的时候,它又成垂直排列的了,当关闭了对话框之后,它又成水平排列了!这是为什么呀??高手??
还有,如果用navigateURL方法来实现,为什么当第一交点击时,不会弹出,一直要到第二次点击,对话框才会弹出呢???

追答

我觉得啊,这个就是服务器端控件和客户端控件的区别吧,还有这种弹出窗口的方法也不好,在企业中大部分用的都是客户端的控件,服务器端的控件用的过多的话,在页面的源代码上会有很多的垃圾代码,而且不干净,你说的这种情况是属于正常的现象。
还有你说用了navigateURL这种方法,点一次不行,必须点第二次才能弹出,这个问题,你能把你的那个绑定URL的方法给我看一下吗?

追问

谢谢了,我已经解决了!

参考技术A 试试ScriptManager.RegisterStartupScript

如果不行,就只能用ajax了追问

对不起,师兄!你可以说得再清楚些吗??怎么用???

追答

ScriptManager.RegisterStartupScript(界面上随便一个服务器控件就成, this.GetType(), "showd", "window.showModalDialog('ModeDialog.aspx','','dialogWidth=300px;dialogHeight=400px;resizable:yes');", true);

以上是关于为啥在C#中用Response.Write("<script>alert('内容')</script>")时,当弹出提示框是,网页其的主要内容,如果未能解决你的问题,请参考以下文章

Page.ClientScript和Response.Write的用法(c#)

C# Response.Write pdf 不适用于 Android 浏览器

C#中Console.WriteLine与Response.Write有啥区别

使用 Response.Write JSON 输出从 Jquery 调用 c# asmx Web 服务

node项目中用到的一些模块

C# .NET弹出窗口大全