使用子目录时,Javascript和CSS文件不起作用

loy*_*low 1 c# asp.net asp.net-mvc asp.net-mvc-4

我需要获取基本路径,因为目前我的应用程序作为子站点托管,如:

www.example.com/site1/site2/
Run Code Online (Sandbox Code Playgroud)

我的IIS应用程序在site2中设置的位置,但我的剃刀页面和母版页引用了以下内容:

 <link href="/Assets/css/styles.css" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)

在这种情况下应该是这样的:

 <link href="/site1/site2/Assets/css/styles.css" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)

我也有像这样的图像:

 <img src="/Assets/images/logo.jpg" />
Run Code Online (Sandbox Code Playgroud)

如何让它以动态方式工作,以便我不必在某个地方对子目录进行硬编码?

Tom*_*mmy 5

您应该使用内置帮助程序来获取内容的相对路径.

 <link href="@Url.Content("~/Assets/css/styles.css")" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)

对于托管的网站www.domain.com/site/subdirectory,以上内容将呈现给

<link href="/site/subdirectory/Assets/css/styles.css" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)

而且,如果您移动网站或更改根路径,则无需更改标记代码.

更多例子:

图片

<img src="@Url.Content("~/Assets/images/logo.jpg")" />
Run Code Online (Sandbox Code Playgroud)

使用Javascript

<script type="text/javascript" src="@Url.Content("~/Assets/Scripts/jsfile.js")"></script>
Run Code Online (Sandbox Code Playgroud)