2

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

external_link_list_url : "example_link_list.js"

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

谢谢!

4

4 回答 4

4

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

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

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

于 2008-09-16T00:09:32.603 回答
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 请求具有更多相关的开销(所有页面事件等)

于 2008-09-16T02:17:00.333 回答
0

如果您不能更改文件扩展名(并且只返回纯文本,调用者不应该关心文件扩展名,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

于 2008-09-16T00:06:49.473 回答
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#)中:

使用系统;

公共部分类默认值: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(");");
    }
}
于 2008-09-16T01:23:39.650 回答