Как мне сослаться на файл JavaScript? - PullRequest
10 голосов
/ 04 сентября 2008

Я работаю над проектом C # / ASP.NET, в котором все файлы javascript находятся в папке / Javascript. Если я обращаюсь к файлу JS, используя следующий синтаксис: src = "/ Javascript / jsfile.js", то файл будет правильно выбран, если проект развернут в корне URL-адреса.

Однако, если этот «веб-сайт» развернут в подпапке основного URL, это не сработает. Таким образом, решение может заключаться в использовании относительных URL-адресов, но есть проблема и с этим, поскольку главные страницы ссылаются на многие файлы javascript, и эти главные страницы могут использоваться страницами в корне и в подпапках на многих уровнях.

У кого-нибудь есть идеи для решения этой проблемы?

Ответы [ 5 ]

11 голосов
/ 04 сентября 2008

Если вы ссылаетесь на JS-файл в разделе "runat = server", вы можете написать src = "~ / Javascript / jsfile.js", и он всегда будет работать.

Вы также можете сделать это в вашей Page_Load (на главной странице):

Page.ClientScript.RegisterClientScriptInclude("myJsFile", Page.ResolveClientUrl("~/Javascript/jsfile.js"))
4 голосов
/ 04 сентября 2008

Совершенно новая версия ASP.NET ( 3.5 SP1 ) имеет изящную функцию под названием CompositeScript . Это позволяет вам использовать ScriptManager для ссылки на множество крошечных маленьких файлов .js на стороне сервера и передавать их как один файл .js клиенту.

Хорошо для клиента, поскольку он должен загрузить только один файл. Хорошо, так как вы можете хранить файлы так, как хотите на стороне сервера.

<asp:ScriptManager ID="ScriptManager1" 
    EnablePartialRendering="True"
    runat="server">
    <Scripts>
        <asp:ScriptReference 
            Assembly="SampleControl" 
            Name="SampleControl.UpdatePanelAnimation.js" />
    </Scripts>
</asp:ScriptManager>
4 голосов
/ 04 сентября 2008

Попробуйте что-то подобное на главной странице:

<script type="text/javascript" src="<%= Response.ApplyAppPathModifier("~/javascript/globaljs.aspx") %>"></script>

По какой-то причине я обнаружил, что браузеры довольно привередливы в отношении последнего тега, поэтому простое завершение тега /> не работает.

0 голосов
/ 04 ноября 2008

Возможно, вы захотите взглянуть на FileResolver . Это HTTP-обработчик, который позволяет вам сделать это:

<link rel="stylesheet" href="~/resources/stylesheet.css.ashx" />

И правильно разверните тильду (а также любые тильды в файле).

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

@ Джаред: IE нужен этот / скрипт. FF не волнует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...