【问题标题】:How can I use runat="server" on a script tag in asp.Net如何在 asp.Net 的脚本标签上使用 runat="server"
【发布时间】:2010-08-18 18:52:15
【问题描述】:

我不一定需要在服务器上运行它,但是,我想使用~/js/somefile.js 语法。

以前,我只是将所有内容都设置为绝对路径,并将我的项目设置为根级别。所以,我只需声明我所有的样式表、背景图像和 javascript 文件,例如 /css/somefile.css

但是,对于这个项目,它不以 root 身份运行。

我不能将runat="server" 放在脚本标签上。

不过,我可以把它放在链接标签上。

这一定是一个常见的问题,只需几个简单的答案。

【问题讨论】:

    标签: asp.net relative-path script-tag runatserver


    【解决方案1】:

    我一直在做的是使用普通的script 标签并将src 放入<% %> 标签中,如图here

    <script language="javascript" src='<%=ResolveUrl("~/App_Themes/MainTheme/jquery.js")%>' type='text/javascript'></script>
    

    【讨论】:

    • 谢谢!是的,现在我记得以前看过这个。
    • 仅供参考,根据这篇文章:stackoverflow.com/questions/778952/… 最好使用 # (DataBinding Expression) 并从后面绑定。
    • @dl-_-lb:以前从未见过,但这是有道理的。谢谢!
    • 对于某些人来说,如果他们得到“无法修改控件集合”异常,可能会有所帮助的附加提示是将上述方法包装在 :PlaceHolder> 标签。
    【解决方案2】:

    您可以为此使用 ScriptManager:

    <asp:ScriptManager ID="ScriptManager1" runat="server">
            <Scripts>
                <asp:ScriptReference Path="~/js/somefile.js" />
            </Scripts>
    </asp:ScriptManager>
    

    【讨论】:

    • 我过去做过这个,是的......我想知道最好的方法是什么。这会增加任何其他开销吗?
    • ScriptManager(或 ToolkitManager)通常是 ASP.NET Webforms 中的理想选择。
    【解决方案3】:

    您可以通过使用 asp:ContentPlaceHolder 包装脚本标签来完全获得所需的内容 并且您可以从后面的代码中访问它,例如通过将 visible 属性设置为 truefalse 来设置它是否被执行。 示例如下:

        <asp:ContentPlaceHolder runat="server" ID="PrintPreviewBlock" Visible="false">
        <script id="PrintPageCall" type="text/javascript" >
            $(function() {
                window.print();
            });
        </script>
    </asp:ContentPlaceHolder>
    

    以及来自后面的代码:

    PrintPreviewBlock.Visible = true;
    

    【讨论】:

    • 这仅在您将其放入.master 文件时才有效;您不能在常规的 aspx 网页中执行此操作。
    【解决方案4】:

    不过,您可以在路径字符串中使用函数,例如

    <script type="text/javascript"
            src="<%=Url.Content("~/Scripts/jquery-1.4.2.min.js") %>"></script>
    

    但是,这是本地路径的 ASP.NET MVC 语法 - 我不记得表单版本了。

    【讨论】:

    • 表单版本是一样的。 MVC 语法继承自 Web 表单。
    • @Joel 我的意思是我使用的UrlHelper 类仅适用于MVC。正如其他人击败我一样,表单版本是ResolveUrl on System.Web.UI.Control
    【解决方案5】:

    取自dailycoding.com

    <script language="javascript" src="<%=ResolveUrl("~/[PATH]")%>" type="text/javascript"></script> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-07
      • 2012-03-20
      • 1970-01-01
      • 2010-09-09
      • 1970-01-01
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多