如何从服务器生成 Javascript 文件

发布于 2024-07-03 23:16:19 字数 303 浏览 10 评论 0原文

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

external_link_list_url :“example_link_list.js”

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

谢谢!

I'm using BlogEngine.NET (a fine, fine tool) and I was playing with the TinyMCE editor and noticed that there's a place for me to create a list of external links, but it has to be a javascript file:

external_link_list_url : "example_link_list.js"

this is great, of course, but the list of links I want to use needs to be generated dynamically from the database. This means that I need to create this JS file from the server on page load. Does anyone know of a way to do this? Ideally, I'd like to just overwrite this file each time the editor is accessed.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

沫离伤花 2024-07-10 23:16:19

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

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

If you can't change the file extension (and just return plain text, the caller shouldn't care about the file extension, js is plain text) then you can set up a handler on IIS (assuming it's IIS) to handle javascript files.

See this link - http://msdn.microsoft.com/en-us/library/bb515343.aspx - for how to setup IIS 6 within windows to handle any file extension. Then setup a HttpHandler to receive requests for .js (Just google httphandler and see any number of good tutorials like this one: http://www.devx.com/dotnet/Article/6962/0/page/3 )

‘画卷フ 2024-07-10 23:16:19

只需将其指向一个 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(");");
    }
}

Just point it at an aspx file and have that file spit out whatever javascript you need. I did this recently with TinyMCE in PHP and it worked like a charm.

external_link_list_url : "example_link_list.aspx"

In your aspx file:

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

in your code-behind (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(");");
    }
}
夏日浅笑〃 2024-07-10 23:16:19

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

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

context.Response.Write(); 您的外部链接列表

I would create an HTTPHandler that responds with the desired data read from the db. Just associate the HTTPHandler with the particular filename 'example_link_list.js' in your web-config. Make sure you set

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

then just context.Response.Write(); your list of external links

沒落の蓅哖 2024-07-10 23:16:19

如果您的第 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 请求有更多的相关开销(所有页面事件等)

if your 3rd party code doesn't require that the javascript file has the .js extension, then you can create your HTTPHandler and map it to either .axd or .ashx extension in web.config only - no need to change IIS settings as these extensions are automatically configured by IIS to be handled by asp.net.

<system.web>
  <httpHandlers>
    <add verb="*" path="example_link_list.axd" type= "MyProject.MyTinyMCE, MyAssembly" />
  </httpHandlers>
</system.web>

This instructs IIS to pass all requests for 'example_link_list.axd' (via POST and GET) to the ProcessRequest method of MyProject.MyTinyMCE class in MyAssembly assembly (the name of your .dll)

You could alternatively use Visual Studio's 'Generic Handler' template instead - this will create an .ashx file and code-behind class for you. No need to edit web.config either.

using an HTTPHandler is preferrable to using an .aspx page as .aspx requests have a lot more overheads associated (all of the page events etc.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文