在ASPX页面中动态构建JavaScript的方法?

时间:2009-09-11 15:33:17

标签: c# asp.net javascript scripting scriptmanager

我有一个页面是通过另一个网站上的页面的<script>标记引用的。在脚本src中,我传入我希望我的脚本构建的表单(来自db表),以及动态构建表单应该去的div。调用页面看起来像这样:

<div id="FormContainer"></div>
<script type="text/JavaScript" src="http://www.example.com/GenerateForm.aspx?FormId=1&div=FormContainer"></script>

GenerateForm.aspx包含读取FormId的QueryString参数和Div Id的代码,并输出将构建表单的JavaScript。

我的问题是这个。 “输出”JavaScript有哪些不同的方法?一些JavaScript是静态的,可以打包到外部.js文件中,我也有jQuery。但是我应该在GenerateForm.aspx标记页面上添加它吗?或者我应该使用ScriptManager吗?

那么动态构建的JavaScript呢?目前我只是使用Response.Write()来进行概念验证,但相反,我应该做些什么吗?在页面上使用Literal控件并设置其值?使用ScriptManager?还有别的吗?

我知道这是一个冗长的问题,所以提前谢谢!

1 个答案:

答案 0 :(得分:1)

如果你想使用一个单独的,引用的Javascript文件,你可能想要做的是使用ashx文件。基本上,这只是一个通用的处理程序,您可以使用它直接写入输出流,而无需处理ASP.NET页面生命周期。如果您从“添加新项”对话框向站点添加基本通用处理程序(.ashx),则模板应该是足够的方向,使用context.Response.Write()动态输出您的Javascript。

如果要在特定时间输出要运行的各个Javascript行,则ScriptManager会更有用,例如在事件触发后。然后,您可以执行ScriptManager.RegisterClientBlock(this, this.GetType(), "CodeBlock", "alert('Button clicked');", true);以在单击按钮后显示客户端警报框。

应该以这种方式处理静态文件 - 静态。服务器可以处理缓存,如果直接从脚本标记引用静态脚本文件,则不会导致不必要的处理。但是,如果您需要动态加载静态脚本,您可以创建一个包含&lt; script&gt;的文字。里面的标签。这样它就可以使用浏览器的静态文件缓存版本。