Как использовать runat = "server" в теге script в asp.Net
Мне не обязательно запускать его на сервере, однако я бы хотел использовать синтаксис ~/js/somefile.js
.
Раньше я просто установил все с помощью Абсолютных путей и установил, что мой проект находится на корневом уровне. Я просто объявляю все мои таблицы стилей, фоновые изображения и файлы javascript как-то вроде /css/somefile.css
Однако для этого проекта он не запускается с правами root.
Я не могу поместить runat="server"
в тег script.
Я могу поместить его в тег ссылки.
Это должна быть общая проблема с несколькими простыми ответами.
Ответы
Ответ 1
То, что я всегда делал, это использовать обычный тег script
и поместить теги src
в <% %>
, как показано на рисунке здесь:
<script language="javascript" src='<%=ResolveUrl("~/App_Themes/MainTheme/jquery.js")%>' type='text/javascript'></script>
Ответ 2
Вы можете использовать ScriptManager для этого:
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="~/js/somefile.js" />
</Scripts>
</asp:ScriptManager>
Ответ 3
Вы можете использовать функции внутри строки пути, например,
<script type="text/javascript"
src="<%=Url.Content("~/Scripts/jquery-1.4.2.min.js") %>"></script>
Однако, что синтаксис ASP.NET MVC для локальных путей - я не могу вспомнить версию форм с верхней части головы.
Ответ 4
Вы можете полностью получить то, что хотите, обернув script тегом asp: ContentPlaceHolder
и вы можете получить к нему доступ из кода позади, например set будет выполняться или нет, установив для свойства visible значение true или false.
Вот пример:
<asp:ContentPlaceHolder runat="server" ID="PrintPreviewBlock" Visible="false">
<script id="PrintPageCall" type="text/javascript" >
$(function() {
window.print();
});
</script>
</asp:ContentPlaceHolder>
и из кода позади:
PrintPreviewBlock.Visible = true;
Ответ 5
Взято из dailycoding.com:
<script language="javascript" src="<%=ResolveUrl("~/[PATH]")%>" type="text/javascript"></script>