【问题标题】:Relative Image URL in Javascript File - ASP.net MVC and IIS 7Javascript 文件中的相对图像 URL - ASP.net MVC 和 IIS 7
【发布时间】:2008-12-04 22:44:28
【问题描述】:

我正在开发一个 Asp.net mvc 应用程序,在 ASP.net 开发服务器中一切正常,但是当我尝试在 IIS 7 上托管它时。我遇到了与 URL 解析相关的问题。我在 Javascript 中使用相对路径来提供图像。脚本文件位于 ~/Scripts/ 文件夹中,图像文件位于 ~/Content/images/ 文件夹中。现在在javascript文件中,我试图通过给出相对路径来使用给定 http://localhost/WebApp1/controller1/action1/ 它试图在http://localhost/controller1/action1/ 找到它,但找不到该文件。

【问题讨论】:

    标签: javascript asp.net-mvc iis-7


    【解决方案1】:

    如果我的理解是正确的,那么您现在是从 IIS7 的域根目录运行 WebApp,而不是从您的开发环境运行 WebApp1?

    所以,如果我的假设是正确的,那么 ~/ 现在应该解析为 http://localhost/ http://localhost/WebApp1/

    如果这一切仍然正确,那么您的文件夹结构已全部上移一级,您的 ~/scripts 文件夹位于绝对路径中:

    http://localhost/Scripts/

    您的图片文件夹为:

    http://localhost/Content/Images/

    为了从您的脚本中访问您的图像,您可以使用多种方法。最简单的是使用脚本目录中的相对路径:"../Content/Images/MyImage.jpg"

    或者您可以使用 document.location.host 在 javascript 中构建完全限定的路径名​​:document.location.host + "/Content/Images/MyImage.jpg"

    另一种方法是让 ASP.NET 动态构建这部分脚本,以便注入完全限定的路径名​​。您可以使用 ScriptManager.RegisterStartupScriptScriptManager 来做到这一点。注册脚本块

    真的有很多方法可以给这只猫剥皮,它们只是我能想到的前 3 种。

    【讨论】:

    • +1 选项document.location.host + "/Content/Images/MyImage.jpg"
    【解决方案2】:

    试试:

    runat 属性应该确保框架能够解析它。您也可以使用 ResolveUrl 方法。

    【讨论】:

    • 我不是 JavaScript 专家,但您可以尝试像这样嵌入它:
    • 我认为不可能将这样的asp代码嵌入到JS中
    • @Raja,您在使用母版页吗?
    【解决方案3】:

    我遇到了同样的问题,并找到了 David Banister 的元素解决方案。问题在于 MVC 控制器的 index 操作以(www.mysite.com/viewName,而不是 www.mysite.com/viewName/index)的形式返回一个 URL,Web 浏览器稍后在尝试引用 css 时会失败或使用相对路径语法 (../../) 的 js 文件。

    他的解决方案对我很有效。希望这可以帮助某人。祝你好运。

    http://blog.davidbanister.com/2010/09/28/mvc-fixes-relative-path-issues-in-asp-net-mvc-2/

    【讨论】:

      【解决方案4】:

      我过去也遇到过这个问题,请尝试使用波浪号

      ~/controller1/action1/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-17
        • 2013-02-06
        • 2010-10-16
        • 1970-01-01
        • 1970-01-01
        • 2015-12-18
        • 2010-11-07
        • 1970-01-01
        相关资源
        最近更新 更多