C# ASP.NET从不同路径链接到资源(img、css、js)

C# ASP.NET从不同路径链接到资源(img、css、js),c#,asp.net,html,C#,Asp.net,Html,我刚接触ASP.NET,并在.NET4.0中浏览了我的第一个ASP Web应用程序项目 我有一个我无法解决的问题,谷歌搜索也不能带来任何快乐 因此,我希望获得以下问题的帮助和/或解释: 假设我建立了以下项目结构: \default.aspx \[gfx] (dir) \[images] \picture.jpg \[css] \stylesheet.css \[js] \jquery.js \[backend] \main.aspx 因此,

我刚接触ASP.NET,并在.NET4.0中浏览了我的第一个ASP Web应用程序项目 我有一个我无法解决的问题,谷歌搜索也不能带来任何快乐

因此,我希望获得以下问题的帮助和/或解释:

假设我建立了以下项目结构:

\default.aspx
\[gfx] (dir)
   \[images]
     \picture.jpg
   \[css]
     \stylesheet.css
   \[js]
     \jquery.js
\[backend]
   \main.aspx
因此,在default.aspx中,我可以像这样链接到图像或css:

     < img src="/gfx/images/picture.jpg">
     < link rel="stylesheet" type="text/css" href="/gfx/css/stylesheet.css"/>

这是可行的,但我担心这种链接技术不是“正确”的。是的-它可以工作,并且可以链接,但作为PHP开发人员,我总是链接到资源的完整路径,例如:

有没有一种方法可以在ASP.NET中实现类似的结果,而不会丢失visual studio中的设计预览?我的链接技术是常见的还是有其他的方法


致以最诚挚的问候

你所做的是最常用的方式。您可以使用完整路径,但大多数情况下您希望使用相对路径。这样,如果您的URL发生更改,您的站点不会中断


例如,如果您的站点是“www.mysite.net”,并且您的图像指向“www.mysite.net/images/someimage.png”,然后您将站点更改为“www.someothersite.com”,则您的站点将中断。但是,如果您使用“/images/someimage.png”,它将不会中断。

您所做的是通常的做法。您可以使用完整路径,但大多数情况下您希望使用相对路径。这样,如果您的URL发生更改,您的站点不会中断


例如,如果您的站点是“www.mysite.net”,并且您的图像指向“www.mysite.net/images/someimage.png”,然后您将站点更改为“www.someothersite.com”,则您的站点将中断。但是,如果您使用“/images/someimage.png”,它不会中断。

如果您是从CSS显示图像,请尝试从那里使用它。例如创建一个样式目录,内部样式创建一个图像,并将所有要在CSS中使用的图像放入其中


对于常规图像,在根目录中创建一个文件夹images,并将所有要在不使用CSS的情况下渲染的图像放入其中。在需要使用这些图像的地方,只需拖放图像,VS将完成其余操作。如果需要从Codebehing以编程方式进行设置,请在标记中添加runat=“server”。仅此而已。

如果您正在显示来自CSS的图像,请尝试从那里使用它。例如创建一个样式目录,内部样式创建一个图像,并将所有要在CSS中使用的图像放入其中


对于常规图像,在根目录中创建一个文件夹images,并将所有要在不使用CSS的情况下渲染的图像放入其中。在需要使用这些图像的地方,只需拖放图像,VS将完成其余操作。如果需要从Codebehing以编程方式进行设置,请在标记中添加runat=“server”。仅此而已。

大多数情况下,如果使用
~
运算符,asp.net会自动将其映射到应用程序的根目录

<head runat="server">
<img src="~/gfx/images/picture.jpg">
<link rel="stylesheet" type="text/css" href="~/gfx/css/stylesheet.css"/>
</head>

您还可以在变量中使用应用程序根路径,也可以使用。比如说

<head>
<img src="<%=SomeClass.SITEURL%>/gfx/images/picture.jpg">
<link rel="stylesheet" type="text/css" href="~/gfx/css/stylesheet.css"/>
</head>

/gfx/images/picture.jpg“>
使用后一种技术有几个优点,因为它被渲染为绝对路径(稍微快一点)
如果您希望放置来自不同服务器的静态内容,则可以在某种意义上进行配置。

大多数情况下使用
~
运算符,asp.net会自动将其映射到应用程序的根目录

<head runat="server">
<img src="~/gfx/images/picture.jpg">
<link rel="stylesheet" type="text/css" href="~/gfx/css/stylesheet.css"/>
</head>

您还可以在变量中使用应用程序根路径,也可以使用

<head>
<img src="<%=SomeClass.SITEURL%>/gfx/images/picture.jpg">
<link rel="stylesheet" type="text/css" href="~/gfx/css/stylesheet.css"/>
</head>

/gfx/images/picture.jpg“>
使用后一种技术有几个优点,因为它被渲染为绝对路径(稍微快一点)
如果您想放置来自不同服务器的静态内容,可以在某种意义上进行配置。

您已经用正确的方式进行了!当您将站点发布到服务器时,该链接将是完整的链接,就像在php中一样

您已经用正确的方式完成了!当您将站点发布到服务器时,该链接将是完整的链接,就像在php中一样,您可以创建一个设计时样式表。这对于制作用户控件非常方便。这里已经描述了这个过程;
您可以制作设计时样式表。这对于制作用户控件非常方便。这里已经描述了这个过程;