Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Response.Write()和ClientScript.RegisterStartupScript()之间的差异?_C#_Asp.net - Fatal编程技术网

C# Response.Write()和ClientScript.RegisterStartupScript()之间的差异?

C# Response.Write()和ClientScript.RegisterStartupScript()之间的差异?,c#,asp.net,C#,Asp.net,Response.Write()和ClientScript.RegisterStartupScript()之间的区别是什么 谢谢。 Write方法写入指定的 字符串添加到当前HTTP输出 将启动脚本注册到 页面对象 这是一个巨大的差异 基本上是响应。Write将立即写入响应流,通常这会将您所写的内容放在页面输出的最顶端,甚至在标记之前(除非您在页面呈现事件之后调用它) 当您使用RegisterStartupScript时,它将等待并在页面控件呈现后将JavaScript写入响应流(即,控件将其

Response.Write()和ClientScript.RegisterStartupScript()之间的区别是什么 谢谢。

Write方法写入指定的 字符串添加到当前HTTP输出

将启动脚本注册到 页面对象


这是一个巨大的差异

基本上是响应。Write将立即写入响应流,通常这会将您所写的内容放在页面输出的最顶端,甚至在标记之前(除非您在页面呈现事件之后调用它)

当您使用RegisterStartupScript时,它将等待并在页面控件呈现后将JavaScript写入响应流(即,控件将其HTML写入响应流)。这意味着您注册的JavaScript将在其他HTML加载到DOM之前由浏览器执行。这与事件非常相似。这样做的另一件事是,如果“注册”脚本,那么如果页面上有多个控件都需要JavaScript,那么他们可以检查它是否已经注册,这样它只呈现一次,并且两个控件都在客户端使用它


希望这是有意义的,还有更多的细节,但我尽量保持简单。

我认为,这两种方法是不相关的。Response.Write()可用于在呈现的页面上写入内容。而ClientScript.RegisterStartupScript()可用于在页面启动时注册javascript。

在页面的呈现阶段,可使用
Response.Write
方法输出代码。
服务器标记是
的快捷方式

如果从代码隐藏中使用
Response.Write
,您将在页面开始呈现之前写入页面,因此代码最终将位于html文档之外。即使浏览器将执行代码,它也不能正常工作。在doctype标记之前添加一些内容将使浏览器忽略doctype并以怪癖模式呈现页面,这通常会破坏布局。此外,由于脚本在页面的任何内容存在之前运行,因此代码无法访问页面中的任何元素

ClientScript.RegisterStartupScript
方法是将脚本动态添加到页面的首选方法。它将在表单末尾呈现脚本,这样就不会破坏html documnet,并且可以访问表单中的元素


此外,还为每个脚本指定了一个标识,这意味着将删除重复的脚本。如果某个用户控件注册了一个脚本,并且您使用了该用户控件的多个实例,则该脚本在页面中仅呈现一次。

向页面对象注册启动脚本的含义是什么。adamantium先生感谢您的响应如果您想在回发后执行脚本块,您可以使用此方法。您的意思是,在ClientScript中呈现页面之前,response.write()将获得响应。在回发后,RegisterStartupScript方法将获得响应,对吗?先生Guffa@Surya:两者都会将代码添加到发送到浏览器的页面中,以便在浏览器中加载页面时运行代码。区别在于代码在响应中的位置。将代码放在文档之前意味着浏览器首先运行代码,然后加载响应的其余部分,即实际页面。如果你有回应,写下(“警告(1);”;当警报显示时,窗口将为空白,并且在关闭警报后加载页面(可能由于忽略的doctype而扭曲)。Guffa你是说当我们写Response.write(“警报(1);”)时,当警报显示时窗口将为空,关闭警报后页面加载,但当我使用ClientScript.RegisterStartupScript(gettype(),“sa”,“警报(1);”,false)时,当警报显示时窗口将为空,关闭警报后页面加载,有时窗口在空白处,即使我们关闭警报,页面也不会加载它,它仍然保留在空白(白色页面)@ Sury:当脚本在页面中的所有元素完成之前运行,页面可能不会显示,取决于您如何完成布局。如果在脚本运行后页面没有显示,那么页面还有其他问题。查看空白查找页的来源,看看你得到的页面有多少,如果有错误消息。但是它将在空白页中,你的意思是Realth.WrreEffage()将在呈现Cclipse Script的页面之前得到。ReistStastutupScript方法在回复后会得到吗?dukkNo先生,回发是指页面刷新但保持在同一页面上。这将在第一次请求页面时发生。