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