【问题标题】:Using tilde in script tag src attribute在脚本标签 src 属性中使用波浪号
【发布时间】:2012-11-12 10:41:43
【问题描述】:

在我的使用MasterPageRouting 的asp.net 网站中,我在MasterPage 的head 部分的样式表的link 标记的href 属性中使用了波浪号。像这样:

<link href="~/Styles/Main.css" rel="stylesheet" type="text/css" />

这就像一个魅力。由于网站使用路由,因此 url 将包含越来越多的/,但样式表的 href 仍然有效,因为波浪号指向 Web 应用程序的根并且使用了样式。

我尝试对script 标签的src 属性使用相同的技术,但这似乎不会产生预期的结果。我试过了:

<script src="~/Scripts/jquery-1.8.2.min.js" type="text/javascript" ></script>

但这只是将波浪字符输出到页面的 HTML,而不是像 href 属性那样将其替换为 Web 应用程序的根。我的经验是,asp.net 在href 属性中替换了波浪号,但在src 属性中没有。

如何使波浪号在脚本标签的src 属性中起作用?

【问题讨论】:

    标签: asp.net routing tilde


    【解决方案1】:

    我不确定是否有办法让它在没有一点帮助的情况下正常工作。这应该可行,但不如link 好:

    <script src="<%=ResolveUrl("~/Scripts/jquery-1.8.2.min.js")%>"></script>
    

    【讨论】:

    • 哈哈 +1 感谢您的建议。我认为它可能会起作用,但我倾向于出于审美原因温和地拒绝这一点。感谢您回答我的问题,但我希望有一个更“优雅”的解决方案。 Asp.net 已经为href 属性做了正确的行为,我希望我可以将src 添加到某个列表中以使其工作。
    • 您是否尝试过在脚本标签中添加 runat="server" 属性?
    • 然后它会尝试在服务器端执行javascript。不是一个好计划。
    • 好吧,你应该添加一个 type 属性,让它知道它的“text/javascript”
    • @armen.shimoon: ...并添加type='text/javascript' 不会阻止它在服务器端运行,它会告诉它在服务器端运行javascript!
    【解决方案2】:

    不幸的是,你想要的只是不起作用(尽管我同意它应该)。

    如果您使用的是脚本管理器,那么您可以做一些相当接近的事情:

    <asp:ScriptManager>
       <Scripts>
          <asp:ScriptReference Path="~/Scripts/jquery-1.8.2.min.js" />
       </Scripts>
    </asp:ScriptManager>
    

    【讨论】:

    • 感谢您的建议,但我在不到 10 年前就接受了答案。到目前为止,使用此解决方案的软件可能已报废。 ?
    • @Bazzz:我明白了,我把答案放在那里,给仍在处理这个问题的其他人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 2011-03-05
    • 2019-07-07
    相关资源
    最近更新 更多