Как создать файл Javascript с сервера - PullRequest
2 голосов
/ 16 сентября 2008

Я использую BlogEngine.NET (прекрасный инструмент), и я играл с редактором TinyMCE и заметил, что у меня есть место для создания списка внешних ссылок, но это должен быть файл JavaScript:

external_link_list_url : "example_link_list.js"

это здорово, конечно, но список ссылок, которые я хочу использовать, должен генерироваться динамически из базы данных. Это означает, что мне нужно создать этот файл JS с сервера при загрузке страницы. Кто-нибудь знает способ сделать это? В идеале, я хотел бы просто перезаписывать этот файл каждый раз при доступе к редактору.

Спасибо!

Ответы [ 4 ]

4 голосов
/ 16 сентября 2008

Я бы создал HTTPHandler, который отвечает желаемыми данными, прочитанными из БД. Просто свяжите HTTPHandler с конкретным именем файла «example_link_list.js» в вашей веб-конфигурации. Убедитесь, что вы установили

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

тогда просто context.Response.Write (); Ваш список внешних ссылок

1 голос
/ 16 сентября 2008

если ваш сторонний код не требует, чтобы файл javascript имел расширение .js, тогда вы можете создать свой HTTPHandler и сопоставить его с расширением .axd или .ashx только в web.config - не нужно менять 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) методу ProcessRequest класса MyProject.MyTinyMCE в сборке MyAssembly (имя вашей .dll)

Вместо этого вы можете вместо этого использовать шаблон «Универсальный обработчик» в Visual Studio - это создаст файл .ashx и класс code-behind для вас. Нет необходимости редактировать web.config.

Использование HTTPHandler предпочтительнее, чем использование страницы .aspx, поскольку запросы .aspx имеют гораздо больше накладных расходов (все события страницы и т. Д.)

0 голосов
/ 16 сентября 2008

Просто наведите его на файл aspx и заставьте этот файл выплевывать любой необходимый вам javascript. Я сделал это недавно с TinyMCE на PHP, и это сработало как шарм.

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(");");
    }
}
0 голосов
/ 16 сентября 2008

Если вы не можете изменить расширение файла (и просто вернуть обычный текст, вызывающий не должен заботиться о расширении файла, js - простой текст), тогда вы можете настроить обработчик в IIS (при условии, что это IIS), обрабатывать файлы JavaScript.

Смотрите эту ссылку - http://msdn.microsoft.com/en-us/library/bb515343.aspx - чтобы узнать, как настроить IIS 6 в Windows для обработки любого расширения файла. Затем настройте HttpHandler для получения запросов на .js (просто Google httphandler и посмотрите любое количество хороших учебников, таких как этот: http://www.devx.com/dotnet/Article/6962/0/page/3)

...