我正在使用BlogEngine.NET(一个很好的,很好的工具)而且我正在玩TinyMCE编辑器,并注意到我有一个地方可以创建一个外部链接列表,但它必须是一个javascript文件:
external_link_list_url : "example_link_list.js"
这当然很棒,但我想要使用的链接列表需要从数据库中动态生成。这意味着我需要在页面加载时从服务器创建这个JS文件。有谁知道这样做的方法?理想情况下,我只想在每次访问编辑器时覆盖此文件。
谢谢!
答案 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(");"); } }