Добавить ScriptReference в динамический скрипт - PullRequest
1 голос
/ 29 июня 2011

Я хочу сделать тексты из базы данных доступными в Javascript. Я сделал Texts.aspx, который выводит код Javascript, и я хочу включить его. Включения должны быть выполнены в правильном порядке, потому что Texts.aspx использует функции из других файлов Javascript. Я попытался добавить ScriptReference в этот файл aspx, но это ломает вещи. Следующий код выдает ошибку 404 на ScriptResource.axd.

 <asp:ScriptManager runat="server" EnableScriptGlobalization="true">
     <CompositeScript>
         <Scripts>
             <asp:ScriptReference Path="~/Scripts/textFunctions.js" />
             <asp:ScriptReference Path="~/Scripts/Texts.aspx" />
             <asp:ScriptReference Path="~/Scripts/useTexts.js" />
        </Scripts>
    </CompositeScript>
</asp:ScriptManager>

Как включить динамически генерируемый файл Javascript?

Ответы [ 2 ]

1 голос
/ 29 июня 2011

Пожалуйста, используйте IHttpHandler вместо стандартной страницы aspx, так как это то, что вы действительно ищете. Если вам нужно использовать файл aspx, убедитесь, что вы возвращаете только содержимое javascript, а также что вы установили тип содержимого, как это должно быть для javascripts.

Например:

public class Texts : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/javascript";
        context.Response.Write("var texts = { Some: 'some text here' }");
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

Чем в мастер или aspx

<asp:ScriptManager runat="server" ID="sm">
    <Scripts>
        <asp:ScriptReference Path="/Scripts/jquery-1.4.1.js" />
        <asp:ScriptReference Path="/texts.ashx" />
    </Scripts>
</asp:ScriptManager>

и, наконец, вы можете подтвердить, что он работает (также вы увидите в firebug, что ваш ashx-файл правильно распознается как javascript)

<script type="text/javascript" language="javascript">
    alert(texts.Some);
</script>
0 голосов
/ 15 августа 2012

Нет, это невозможно. ScriptReference делает ссылку на набор сценариев, которые затем считываются с диска, поэтому невозможно создать ScriptReference для расположения HTTP.

...