【问题标题】:Confused by Use of ~ in ASP.NET在 ASP.NET 中使用 ~ 感到困惑
【发布时间】:2010-01-28 18:04:03
【问题描述】:

我是第一次在 ASP.NET 中编程。事实证明这很容易,我真的很享受。我喜欢的一个功能是,在网页中,我可以通过使用波浪号 (~) 字符和路径的其余部分从根目录引用文件。然而,这似乎并不一致。例如,它在 href 的上下文中工作,例如

<link href="~/css/StyleSheet.css" />

它对 src 不起作用,例如

<img src="~/images/header.jpg" />

这是为什么?有什么我做错了。这种不一致很烦人。

【问题讨论】:

  • 如果您还包含 runat="server" 属性,~ 运算符将适用于 HTML 和服务器控件。从这个意义上说,下面公认的答案并不完全正确。
  • @IrishChieftain - 从什么意义上说带有 runat="server" 的 HTML 控件不是服务器控件?!
  • 我想说的是,在没有“~”运算符的情况下将 runat="server" 添加到 HTML 控件(从而使其成为服务器控件)可能不起作用。如果我错了,我会纠正的:-)
  • 啊,我明白了 - 我以为您试图区分具有 runat="server" 的不同类型的控件,而不是它们是否使用 ~。我现在明白了:)

标签: asp.net


【解决方案1】:

根据我的经验,~ 技巧仅适用于服务器控件。如果你的 img 有 runat="server" 应该修复它。

【讨论】:

  • 感谢您的回答。但是,让所有东西都运行在服务器上真的是个好主意吗?对我来说,这似乎会给服务器带来负担。 (无论哪种情况,答案都标记为已接受。)
  • 是的,请谨慎使用服务器标签,在任何可以使用 html 标签(没有 runat=server)的地方都可以使用。如果您在用户控件中使用 html/server 控件,请不要在用户控件中包含您的样式表,将它们包含在将使用用户控件的父页面中
  • @Jason:不,让 everything runat=server 不是一个好主意。 ASP.Net 确实处理了大量的控件,但它需要解析的越少越好。此外,服务器控件可以添加标记或更改标记,虽然您可以使用 .browser 文件等控制更改它,但您可以使用原始 HTML 获得更多控制。
【解决方案2】:

ASP.NET Web Site Paths

为了克服这些缺点, ASP.NET 包括 Web 应用程序 根运算符 (~),您可以使用 在服务器中指定路径时 控制。 ASP.NET 解决了 ~ 运算符到当前的根 应用。你可以用~ 运算符与文件夹一起使用 指定一个基于 当前根目录。

...

您可以在任何 服务器中的路径相关属性 控制。 ~ 运算符被识别 仅用于服务器控件和服务器中 代码。您不能使用 ~ 运算符 用于客户端元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多