如何从服务器生成Javascript文件

时间:2008-09-15 23:58:22

标签: c# asp.net javascript tinymce blogengine.net

我正在使用BlogEngine.NET(一个很好的,很好的工具)而且我正在玩TinyMCE编辑器,并注意到我有一个地方可以创建一个外部链接列表,但它必须是一个javascript文件:

external_link_list_url : "example_link_list.js"

这当然很棒,但我想要使用的链接列表需要从数据库中动态生成。这意味着我需要在页面加载时从服务器创建这个JS文件。有谁知道这样做的方法?理想情况下,我只想在每次访问编辑器时覆盖此文件。

谢谢!

4 个答案:

答案 0 :(得分:4)

我会创建一个HTTPHandler,它响应从db读取的所需数据。只需将HTTPHandler与web-config中的特定文件名“example_link_list.js”相关联即可。确保你设置

context.Response.ContentType = "text/javascript";

然后只是context.Response.Write();您的外部链接列表

答案 1 :(得分:1)

如果您的第三方代码不要求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 :(得分:0)

如果您无法更改文件扩展名(并且只返回纯文本,调用者不应该关心文件扩展名,js是纯文本)那么您可以在IIS上设置一个处理程序(假设它是IIS)处理javascript文件。

请参阅此链接 - http://msdn.microsoft.com/en-us/library/bb515343.aspx - 了解如何在Windows中设置IIS 6以处理任何文件扩展名。然后设置一个HttpHandler来接收.js的请求(只需google httphandler并查看任意数量的好教程,如下所示:http://www.devx.com/dotnet/Article/6962/0/page/3

答案 3 :(得分:0)

只需将其指向一个aspx文件,并让该文件吐出您需要的任何JavaScript。我最近用PHP中的TinyMCE做了这个,它就像一个魅力。

external_link_list_url:“example_link_list.aspx”

在您的aspx文件中:

<%@ Page Language="C#" AutoEventWireup="false" CodeFile="Default.aspx.cs" Inherits="Default" %>

在您的代码隐藏(C#)中:

using System;

public partial class Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write("var tinyMCELinkList = new Array(");
        // put all of your links here in the right format..
        Response.Write(string.Format("['{0}', '{1}']", "name", "url"));
        Response.Write(");");
    }
}