ASP.NET中的单引号(')和双引号(“)奇怪的行为

时间:2016-02-26 09:49:41

标签: c# asp.net

我对报价用法有一些疑问。 例如,当我在asp双引号中加载脚本或css工作正常时,我就像使用它一样:

 <link href="<%= Page.ResolveClientUrl("~/Styles/Site.css") %>" rel="stylesheet" type="text/css" />

但是当我尝试在background-image上使用同样的东西时,它没有按预期工作。给我一个错误:

  

功能参数未公开,')'预期

  background-image: url("<%= Page.ResolveClientUrl("~/Content/image.jpg")%>"); 

此外,当我尝试使用上面指定的代码时,visual studio会正确地突出显示Page.ResolveClientUrl

我使用单引号(`)修复了上述错误,如:

 background-image: url('<%= Page.ResolveClientUrl("~/Content/image.jpg")%>') 

它运行正常,但是visual studio没有按预期突出显示它(我使用黑色背景,服务器标签<% %>在黄色背景上是白色的,标签之间的文本是白色的)。

我的问题是:

  1. 为什么在加载脚本时使用双引号,但在background-image元素中加载图像时则不行。?

  2. 视觉工作室为什么要突出显示,因为它不是服务器代码?

  3. 在上面的示例中,我们应该使用单引号而不是双引号的其他用例是什么?(下面链接中指定的字符串格式除外)。一两个例子就足够了。

  4. PS:我已经阅读过单引号和双引号之间的区别(来自here),但这不适用于此。

1 个答案:

答案 0 :(得分:1)

首先,但不相关,nav语法缺少style属性。

其次,它似乎是样式属性中的ASP.NET问题。它作为完整的属性值(如link标记上所示)非常有效。 :字符可能是罪魁祸首。

你能做什么:

首先,不需要将Page.ResolveClientUrllink标记一起使用。您只能使用波形路径,ASP.NET将解析实际路径。

自:

<link href="<%= Page.ResolveClientUrl("~/Styles/Site.css") %>" rel="stylesheet" type="text/css" />

要:

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

对于nav标记,请尝试使用类,并在CSS端使用相对路径:

HTML:

<nav class="nav-img" />

CSS:

.nav-img {
    background-image: url(../Content/image.jpg);
}