asp.net从数据库传递javascript代码

时间:2010-01-08 01:51:14

标签: asp.net javascript

问题:

有没有办法可以将JavaScript函数传递到页面(从数据库中)来运行?

背景信息

我已经开发了一个元数据驱动的asp.net mvc网站(基本上我在数据库中更改数据,并且页面会动态生成)。

不幸的是,我有一个页面有一些路由要求(即如果你选择选项1,然后隐藏项目x)

我可以通过自定义页面来解决这个问题,但如果我能提出更强大的解决方案,那就太好了。

所以我想的是我可以附加一个onchange事件处理程序(基于元数据值),然后以某种方式有一些基于onchange事件执行的代码。

2 个答案:

答案 0 :(得分:1)

你可以让服务器端代码呈现静态javascript yes,但是由于需求的变化,你无法在客户端上更改javascript;你必须渲染足够动态的JS代码来处理你可能需要做的所有交互。通过服务器端代码,这意味着任何代码以及任何外部资源(即数据库)。虽然,我不确定在数据库中存储静态JS代码是通过将JS存储在一个文件中,并且让JS组件足够聪明以在该文件中具有这些不同的交互来为您购买任何东西。 / p>

所以是服务器端存储可以呈现静态JavaScript,但JS不能动态地从服务器端代码更改,除非您的JS代码在服务器端调用Web服务。

有意义吗?

答案 1 :(得分:1)

这不是最安全的事情,但是使用JavaScript's eval() function,你可以随心所欲地传递它并让它运行。

另一个想法是在服务器上生成一个javascript文件(无论是通过数据库还是通过其他方法获取),并在页面上添加一个脚本标记,该标记调用呈现javascript的处理程序(ashx文件)文件。

在客户端上,你会有这个javascript:

var h = document.getElementsByTagName("head")[0];
var js = document.createElement("script");
js.type = "text/javascript";
js.src = "scriptfilegenerator.ashx";
h.appendChild(js);

在服务器(ashx文件)上你会得到这个代码:

context.Response.AddHeader("content-disposition", "inline; filename=scriptfile.js");
context.Response.ContentType = "text/javascript";

context.Response.Write("your script here");