2008-09-15 79 views
2

我正在使用BlogEngine.NET(一個很好的工具),我在玩TinyMCE編輯器,並注意到有一個地方可以創建一個外部鏈接列表,但它必須是一個JavaScript文件:如何從服務器生成一個Javascript文件

external_link_list_url : "example_link_list.js"

這是偉大的,當然,但被從數據庫中動態生成的我想使用需求的鏈接列表。這意味着我需要在頁面加載時從服務器創建這個JS文件。有誰知道一種方法來做到這一點?理想情況下,我希望每次訪問編輯器時覆蓋此文件。

謝謝!

回答

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

4

我將創建一個HTTPHandler,用從db讀取的所需數據進行響應。只需將HTTPHandler與您we​​b-config中特定的文件名'example_link_list.js'關聯即可。確保你設置了

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

然後just context.Response.Write();你的外部鏈接列表

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(");"); 
    } 
} 
1

如果第三方代碼沒有按」 t要求javascript文件具有.js擴展名,那麼您可以創建HTTPHandler並將其映射到web.config中的.axd或.ashx擴展名 - 無需將這些擴展設置更改爲IIS設置ons由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),以MyProject.MyTinyMCE類的MyAssembly程序集ProcessRequest方法(您的.dll的名稱)

您也可以使用Visual Studio的「通用處理程序」模板 - 這將爲您創建.ashx文件和代碼隱藏類。不需要編輯web.config。

使用HTTPHandler優選使用.aspx頁面.aspx請求有更多的開銷相關聯(所有頁面事件等)

相關問題