1

我在 ASPX 页面中有 VB 脚本。我需要在页面 _load 的 codeBehind 中使用该脚本,并在 For 循环中使用,每次迭代。

我的代码是:-(带有 VB 脚本的 .ASPX 页面。)

<script type="text/vbscript" language="vbscript" >
sub wordit()
'Opens Word application and does some process   
end sub
</script>

部分背后的VB代码:-

          For i As Integer = 1 To colSelRowIndex

            CheckboxTemplateId = colSelRowKeys(i).ToString 'I get the ID from here 
            ViewState("TemplateID") = CheckboxTemplateId 'I need to send the value to the sub routines 
            hen()'sub
            den()'sub
            cs.RegisterStartupScript(cstype, csname1 & i, "wordit();", True)
        Next

我需要从循环中为一个 ID 打开一个 word 文档,为另一个 ID 打开另一个文档。

4

1 回答 1

2

试试这个:

For i As Integer = 1 To 10
    cs.RegisterStartupScript(cstype, csname1 & i, "wordit();", True) 
Next

该函数调用中的第二个参数正在寻找唯一键。这是一项功能,可防止意外以编程方式多次添加相同的脚本。如果您想故意这样做,则每次都需要一个唯一的密钥。

但是你想要这样做表明对正在发生的事情可能存在根本性的误解。当您的服务器代码(包括 Page_Load)正在运行时,Web 浏览器中的客户端页面不存在。服务器代码的目的始终是生成对 Web 请求的 html 响应。服务器代码永远不能直接操作页面 DOM。

显然,对于会话中的页面的第一次请求,这是正确的:服务器必须首先生成初始页面以发送给客户端。但即使在随后的回发中,浏览器也会破坏页面的先前实例。服务器必须从头开始重建整个页面。每一个。时间。发生这种情况时,您在浏览器窗口中查看的页面只是一种残像。浏览器已经销毁了任何之前的 DOM,并且正在等待服务器提供一组全新的 HTML。

我也想知道您使用的是 vbscript,而不是 javascript。使用 vbscript 几乎可以保证您的页面仅适用于 Internet Explorer。

于 2013-11-25T21:16:45.423 回答