在C#中调用response后,怎样保证样式不变

来源:百度知道 编辑:UC知道 时间:2024/05/13 10:24:23
在执行函数中如果调用了response.wirte("<script>alert('*********')</script>")控件的样式就变了,很难看,这是怎么回事啊?

将 response.wirte("<script>alert('*********')</script>")

改成

ClientScript.RegisterStartupScript(this.GetType(), "", "window.alert('*****');", true);

问题不在于调用的问题。

而是因为你使用了这个东西,会在 HTML 代码头部产生这个代码,然后会破坏页面的 <!DOCTYPE 声明。

如 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

如果你在这样的声明前放任何字符,立马会让样式出错。

一般这种情况,都是在头部声明成 xhtml 才会有影响。
另外,也说明了你的 CSS 样式写得不规范,兼容性不够,呵呵。。。

解决方法有三:
1、在页面中间声明 JAVASCRIPT,也就是使用Page.ClientScript.RegisterClientScriptBlock
2、改 CSS
3、改头部 !DOCTYPE 成 <html>

Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "message", " <script>alert('......!'); </script>&quo