Как создать файл Javascript с сервера
Я использую BlogEngine.NET (прекрасный инструмент), и я играл с редактором TinyMCE и заметил, что у меня есть место для создания списка внешних ссылок, но это должен быть файл javascript:
external_link_list_url : "example_link_list.js"
это, конечно, замечательно, но список ссылок, которые я хочу использовать, должен генерироваться динамически из базы данных. Это означает, что мне нужно создать этот файл JS с сервера при загрузке страницы. Кто-нибудь знает способ сделать это? В идеале я хотел бы просто перезаписывать этот файл каждый раз, когда к редактору обращаются.
Спасибо!
4 ответа
Я бы создал HTTPHandler, который отвечает желаемыми данными, прочитанными из БД. Просто свяжите HTTPHandler с конкретным именем файла "example_link_list.js" в вашей веб-конфигурации. Убедитесь, что вы установили
context.Response.ContentType = "text/javascript";
тогда просто context.Response.Write(); ваш список внешних ссылок
Если ваш сторонний код не требует, чтобы файл 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 связано гораздо больше накладных расходов (все события страницы и т. д.)
Если вы не можете изменить расширение файла (и просто возвращаете обычный текст, вызывающему не нужно заботиться о расширении файла, 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)
Просто наведите его на файл aspx и заставьте этот файл выпустить любой необходимый вам javascript. Я сделал это недавно с TinyMCE в PHP, и это сработало как шарм.
external_link_list_url: "example_link_list.aspx"
В вашем файле ASPX:
<% @ Page Language = "C#" AutoEventWireup = "false" CodeFile = "Default.aspx.cs" Inherits = "По умолчанию"%>
в вашем коде (C#):
используя Систему; открытый частичный класс По умолчанию: System.Web.UI.Page { защищенная пустота Page_Load(отправитель объекта, EventArgs e) { Response.Write("var tinyMCELinkList = new Array("); // положить все ваши ссылки здесь в правильном формате.. Response.Write(string.Format("['{0}', '{1}']", "name", "url")); Response.Write(");"); } }