忽略ASP.net中的Javascript、CSS和图像文件路由

忽略ASP.net中的Javascript、CSS和图像文件路由,javascript,asp.net,css,.net-4.0,url-routing,Javascript,Asp.net,Css,.net 4.0,Url Routing,我上下翻阅了堆栈溢出,但不幸的是,没有一个答案对我有帮助 我有一个web应用程序,它使用VisualStudio提供的IIS在本地PC上运行良好,但是当我将此应用程序部署到服务器时,只有CSS正确显示 文件的文件夹结构如下所示: 根目录(此文件夹在服务器上名为知识管理) CSS JS 媒体 上传 文件 图像 使用者 我的代码(至少母版页标题部分)如下所示: <head runat="server"> <link href="CSS/Style.css" re

我上下翻阅了堆栈溢出,但不幸的是,没有一个答案对我有帮助

我有一个web应用程序,它使用VisualStudio提供的IIS在本地PC上运行良好,但是当我将此应用程序部署到服务器时,只有CSS正确显示

文件的文件夹结构如下所示:

  • 根目录(此文件夹在服务器上名为知识管理
    • CSS
    • JS
    • 媒体
    • 上传
      • 文件
      • 图像
      • 使用者
我的代码(至少母版页标题部分)如下所示:

<head runat="server">
    <link href="CSS/Style.css" rel="stylesheet" />
    <script src="/JS/jQuery203Min.js"></script>
    <script src="/JS/jQueryUI1103Min.js"></script>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<head>
    <link href="../../CSS/Style.css" rel="stylesheet" />
    <script src="JS/jQuery203Min.js"></script>
    <script src="JS/jQueryUI1103Min.js"></script>    
    <script src="/JS/HomeArticles.js"></script>
</head> 
<link href="<%= ResolveUrl("~/CSS/Style.css") %>" rel="stylesheet" />

仅供参考,Global.asax不包含任何忽略文件路由的规则,默认情况下添加的.axd文件除外。

我可以通过添加
runat=server
属性并在定义文件源之前使用倾斜(~)对其进行排序。例如:


这同样适用于
javascript
文件。

只需像下面这样尝试,它对我很有用

<script src="JS/jQuery203Min.js" type="text/javascript"></script>
<script src="JS/jQueryUI1103Min.js" type="text/javascript"></script>
<link href="CSS/Style.css" rel="stylesheet" type="text/css"/>

对于脚本和样式的任何URL,您需要像这样调用ResolveUrl:

<head runat="server">
    <link href="CSS/Style.css" rel="stylesheet" />
    <script src="/JS/jQuery203Min.js"></script>
    <script src="/JS/jQueryUI1103Min.js"></script>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<head>
    <link href="../../CSS/Style.css" rel="stylesheet" />
    <script src="JS/jQuery203Min.js"></script>
    <script src="JS/jQueryUI1103Min.js"></script>    
    <script src="/JS/HomeArticles.js"></script>
</head> 
<link href="<%= ResolveUrl("~/CSS/Style.css") %>" rel="stylesheet" />

试试这个。如果没有“~”,它也可以工作,但您可以添加它只是为了引用根目录,它始终是您的项目解决方案。因此,通过使用Tilde“~”可以正确指定css和js文件的位置

<link href="~/CSS/styles.css" type="text/css" rel="stylesheet"/>
<script src="~/JS/jScript.js" type="text/javascript"/>

同样,对于存储在上载文件夹中的图像。您可以使用

<img src="~/Uploads/Images/youImage.gif" />

首先,感谢大家的回复。在玩了几天之后,我终于想出了怎么做才能让一切正常运转

JS问题

通过向.aspx页面添加ScriptManager控件并在其中添加JS文件,我解决了JS问题

<asp:ScriptManager ID="smScripts" runat="server">
     <Scripts>
          <asp:ScriptReference Path="JS/jQuery203Min.js"/>
     </Scripts>
</asp:ScriptManager>

由于某些原因,CSS文件是“开箱即用”的,所以我将它们保持不变

图像问题

我通过避免硬编码的图像链接,并通过将
添加到
标记的src属性,成功地解决了图像问题。我想我应该为所有我不想去的地方做这件事。这可以用于CSS文件、JS文件和所有内容。然而,(尽管这应该可以很好地工作),我在使用JS文件时遇到了一些奇怪的问题,这就是使用ScriptManager的原因

页面链接问题

起初,我没有意识到我的链接都不起作用,因此我认为问题在于半硬编码链接,由于某种原因,即使我以与Global.asax文件中定义的相同方式硬编码了路由,也无法正确路由。我仍然不知道为什么这不起作用


解决方法是使用
生成链接,每个链接都可以正常工作。

目录/虚拟目录设置可能是罪魁祸首


在谷歌浏览器中查看你的页面,然后“检查元素”。滚动到顶部,即可包含.JS文件。您可以单击它们以查看它们试图链接到的URL。服务器上的路径很可能与本地副本略有不同。

不幸的是,将runat标记添加到javascript文件会导致错误。您是否尝试过
?注意
/>
和无结尾
是的,我有-还是一样。我真的很困惑。我甚至尝试将.js文件添加到CSS文件夹中,因为.CSS文件可以正常工作,但也没有任何帮助。真奇怪,这一个对我来说工作得很好。考虑使用捆绑包,我相信我已经找到了一个解决办法(经过10天的调整,尝试等)!似乎将脚本添加到ScriptManager就可以了——我必须对其进行一点测试,但会让您知道!谢谢你的帮助!问题是,如果我在image src属性前面添加“slash”—您能显示包含image元素的代码吗?另外,如果从script src属性中删除“/”,这些链接是否仍然无效?@Fresh我已经添加了带有image元素的代码。删除斜杠没有帮助。我不知道这里的Windows Server是否有问题,因为在测试环境中(使用IIS Express在本地),一切正常。@Hrvach您的母版页在哪里?在某个文件夹中?@AfnanAhmad母版页位于根文件夹中。这是我尝试的第一件事。不幸的是,这没有帮助。