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

weg*_*rer 7 javascript css asp.net url-routing .net-4.0

我上下颠倒了Stack Overflow,但不幸的是,没有一个答案对我有帮助.

我有一个使用Visual Studio提供的IIS在我的本地PC上完美运行的Web应用程序,但是当我将此应用程序部署到服务器时,只有CSS正确显示.

文件的文件夹结构如下:

  • Root(此文件夹在服务器上命名为Knowledge Management)
    • CSS
    • JS
    • 媒体
    • 上传
      • 文件
      • 图片
      • 用户

我的代码,至少对于Master page head部分看起来像这样:

<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>
Run Code Online (Sandbox Code Playgroud)

但是,浏览器会像这样生成它:

<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> 
Run Code Online (Sandbox Code Playgroud)

问题是除了CSS之外,JS文件夹中的所有文件都没有,Media或Uploads文件夹和子文件夹中的任何文件都没有正确生成.

问题是,如果我在图像src属性前添加"斜杠",图像获取位置http://localhost/Media/Discussion.png,如果我不添加"斜杠",那么图像位置http://localhost/Uploads/Users/HrvojeFadiga.jpg应该是http://localhost/Knowledge%20Management/Uploads/Users/HrvojeFadiga.jpg

以下是带图像的代码示例:

<div class="profileInfoWrapper">
    <img src="/Uploads/Users/<%=article.User.PhotoLocation %>" />
    <span class="postInfo">
        <img src="/Media/Rating.png" /><%= GetArticleRating(article.idArticle) %>
    </span>
    <span class="postInfo">
        <img src="/Media/Visitors.png" /><%= GetArticleViews(article.idArticle) %>
    </span>
    <span class="postInfo">
        <img src="/Media/Comments.png" /><%= GetArticleComments(article.idArticle) %>
    </span>
</div>
Run Code Online (Sandbox Code Playgroud)

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

weg*_*rer 1

首先感谢大家的回复。经过几天的游戏,我终于弄清楚该怎么做才能让一切顺利进行。

JS问题

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

<asp:ScriptManager ID="smScripts" runat="server">
     <Scripts>
          <asp:ScriptReference Path="JS/jQuery203Min.js"/>
     </Scripts>
</asp:ScriptManager>
Run Code Online (Sandbox Code Playgroud)

由于某种原因,CSS 文件“开箱即用”,所以我保留它们不变。

图像问题

<%: Page.ResolveUrl("~/Media/Image.png") %>我通过避免对图像进行硬编码链接并添加到标签的 src 属性,成功解决了图像问题<img>。我想我应该对我不想路由的所有内容执行此操作。这可以对 CSS 文件、JS 文件等等进行。然而,(尽管这应该可以完美地工作)我在 JS 文件方面遇到了一些奇怪的问题,这就是使用ScriptManager的原因。

页面链接问题

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

解决方案是通过使用生成链接<%: Page.GetRouteUrl("RouteName", new { routeParameter1 = routeParameter1Value, routeParameter2 = routeParameter2Value}) %>,一切都会正常工作。