Response.Write()和ClientScript.RegisterStartupScript()之间有什么区别 谢谢。
答案 0 :(得分:5)
Response.Write
方法可用于在页面的呈现阶段输出代码。 <%= %>
服务器标记是<%Response.Write( )%>
的快捷方式。
如果您使用后面的代码中的Response.Write
,您将在开始渲染之前写入页面,因此代码将最终在html文档之外。虽然浏览器将执行代码,但它无法正常工作。在doctype标记之前有一些东西会使浏览器忽略doctype并以怪癖模式呈现页面,这通常会破坏布局。此外,由于脚本在页面的任何内容存在之前运行,因此代码无法访问页面中的任何元素。
ClientScript.RegisterStartupScript
方法是向页面动态添加脚本的首选方法。它将脚本呈现在表单的末尾,这样它就不会破坏html documnet,并且它可以访问表单中的元素。
此外,您为每个脚本提供一个标识,这意味着删除了重复项。如果用户控件注册了一个脚本,并且您使用了多个用户控件实例,则该脚本将仅在页面中呈现一次。
答案 1 :(得分:3)
存在巨大差异。
基本上,Response.Write会立即写入您的响应流,通常这会将您在页面输出顶部写入的内容放到标记之前(除非您在页面呈现事件之后调用它)。
当您使用RegisterStartupScript时,它将等待并在页面的控件呈现后将JavaScript写入响应流(IE,控件将其HTML写入响应流)。这意味着您注册的JavaScript将在其他HTML加载到DOM之前由浏览器执行。这与事件非常相似。这样做的另一件事是如果“注册”脚本,那么如果页面上有多个控件需要JavaScript,他们可以检查它是否已经注册,因此它只呈现一次,两个控件都使用它作为客户端。
希望这是有道理的,那么有更多的细节,但我试图保持简单。
答案 2 :(得分:0)
答案 3 :(得分:0)
我认为,这两种方法都是无关的。 Response.Write()可用于在呈现的页面上写入内容。 ClientScript.RegisterStartupScript()可用于在页面启动时注册javascript。