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

asp.net从数据库传递javascript代码,asp.net,javascript,Asp.net,Javascript,问题: 有没有一种方法可以将JavaScript函数传递到要运行的页面(从数据库)中 背景信息 我已经开发了一个元数据驱动的asp.NETMVC网站(基本上我在数据库中更改数据,并动态生成页面) 不幸的是,我有一个页面有一些路由要求(即,如果选择选项1,则隐藏项目x) 我可以通过定制页面来解决这个问题,但如果我能想出一个更健壮的解决方案,那就太好了 因此,我的想法是,我可以附加一个onchange事件处理程序(基于元数据值),然后以某种方式拥有一些基于该onchange事件执行的代码。您可以让服

问题:

有没有一种方法可以将JavaScript函数传递到要运行的页面(从数据库)中

背景信息

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

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

我可以通过定制页面来解决这个问题,但如果我能想出一个更健壮的解决方案,那就太好了


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

您可以让服务器端代码呈现静态javascript是的,但由于需求的变化,您不能在客户端更改javascript;您必须呈现足够动态的JS代码,以处理可能需要执行的所有交互。通过服务器端代码,这意味着任何代码以及任何外部资源(即数据库)。尽管如此,我不确定在DB中存储静态JS代码是否比将JS存储在文件中并使JS组件足够智能,能够在该文件中进行这些不同的交互为您带来了更多好处

因此,是的,服务器端存储可以呈现静态JavaScript,但JS不能从服务器端代码动态更改,除非您的JS代码调用服务器端的web服务


有意义吗?

这并不是最安全的做法,但是使用,你可以传递任何你想要的信息并让它运行

另一个想法是在服务器上生成一个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");

是的,我想是的。我接受你关于JS在数据库中的观点;如果JS组件足够智能,能够处理不同的交互,我就不会(但在本例中,我基本上是在构建一个规则引擎,这是最好的选择,但超出了项目的范围),那么如何在服务器端呈现静态JavaScript呢?你只是动态生成一个.js文件,然后页面读取吗?MVC,对吗?字符串js=”“;在MVC中,您可能会使用这种方法将JS从控制器推送到模型(web表单是不同的;您使用Page.ClientScript来管理这些需求)。然后你简单地把内容写出来。我在想,我明白你的意思。如果您正在构建一个动态的系统,如果存在大量交互,并且不希望有一个臃肿的JS文件,那么将其存储在DB中可能是有意义的。