【问题标题】:How To Generate A Javascript File From The Server如何从服务器生成 Javascript 文件
【发布时间】:2010-09-09 05:59:38
【问题描述】:
我正在使用 BlogEngine.NET(一个很好的工具),我正在使用 TinyMCE 编辑器,发现有一个地方可以让我创建一个外部链接列表,但它必须是一个 javascript 文件:
external_link_list_url : "example_link_list.js"
这当然很棒,但是我要使用的链接列表需要从数据库中动态生成。这意味着我需要在页面加载时从服务器创建这个 JS 文件。有谁知道这样做的方法?理想情况下,我只想在每次访问编辑器时覆盖此文件。
谢谢!
【问题讨论】:
标签:
c#
asp.net
javascript
tinymce
blogengine.net
【解决方案1】:
如果您的第 3 方代码不需要 javascript 文件具有 .js 扩展名,那么您可以创建 HTTPHandler 并将其映射到 web.config 中的 .axd 或 .ashx 扩展名 - 无需更改 IIS设置,因为这些扩展由 IIS 自动配置为由 asp.net 处理。
<system.web>
<httpHandlers>
<add verb="*" path="example_link_list.axd" type= "MyProject.MyTinyMCE, MyAssembly" />
</httpHandlers>
</system.web>
这指示 IIS 将“example_link_list.axd”的所有请求(通过 POST 和 GET)传递给 MyAssembly 程序集中的 MyProject.MyTinyMCE 类的 ProcessRequest 方法(您的 .dll 的名称)
您也可以改用 Visual Studio 的“通用处理程序”模板 - 这将为您创建一个 .ashx 文件和代码隐藏类。也无需编辑 web.config。
使用 HTTPHandler 比使用 .aspx 页面更可取,因为 .aspx 请求具有更多相关的开销(所有页面事件等)
【解决方案2】:
只需将它指向一个 aspx 文件,然后让该文件吐出您需要的任何 javascript。我最近在 PHP 中使用 TinyMCE 完成了这项工作,效果非常好。
external_link_list_url : "example_link_list.aspx"
在您的 aspx 文件中:
在您的代码隐藏 (C#) 中:
使用系统;
公共部分类默认值:System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("var tinyMCELinkList = new Array(");
// 将所有链接以正确的格式放在这里..
Response.Write(string.Format("['{0}', '{1}']", "name", "url"));
Response.Write(");");
}
}
【解决方案3】:
我会创建一个 HTTPHandler 来响应从数据库中读取的所需数据。只需将 HTTPHandler 与 web-config 中的特定文件名“example_link_list.js”相关联。确保你设置了
context.Response.ContentType = "text/javascript";
然后只是 context.Response.Write();您的外部链接列表