【问题标题】:Path to image under MVC5 AreaMVC5 区域下的图像路径
【发布时间】:2015-01-18 09:34:21
【问题描述】:

我对 MVC5 很陌生,我正在尝试在我的一个区域下本地创建一个 Content 文件夹。不幸的是,由于路径不正确(?),我似乎无法在输出中渲染图像,而且我无法弄清楚如何正确引用它。

在我的解决方案中,我如下:

ProjectX
  Areas
     Area1
        Controller
           Area1DefaultController
        Content
           Images
               image1.png
        Views
               View1.cshtml

在我看来,我使用这个:

@Url.Content("~/Areas/Area1/Content/Images/image1.png")

我也试过了..

@Url.Content("~/Content/Images/image1.png")
@Url.Content("/Content/Images/image1.png")
@Url.Content("Content/Images/image1.png")

..所有情况下的结果都是损坏的图像(即路径不正确)。我猜路由会以某种方式阻止图像被检索,但我不知道如何解决这个问题。

这是我的区域注册:

public class Area1Registration : AreaRegistration
{
    public override string AreaName
    {
        get { return "Area1"; }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Area_default",
            "Area/{action}/{id}",
            new { controller = "Area1Default", action = "Index", id = UrlParameter.Optional }
        );
    }
}

更新:ReSharper 能够解析标记中的路径。

如何在内容下找到我的资源?

【问题讨论】:

  • 为什么要在区域中放置像图像这样的静态内容?
  • 因为它们特定于它们所在的区域,并且“全局”静态文件夹中可能存在同名的图像。让我们说这是我无法控制的设计问题。您知道如何解决实际问题吗?
  • 就我个人而言,我会使用诸如/content/area1 等的文件夹结构,但在您的示例中/Areas/Area1/Content/Images/image1.png 应该可以正常工作,当您在浏览器中键入该URL 时会发生什么?
  • 我收到 404。(“HTTP 404。您正在寻找的资源..”)。

标签: c# .net razor asp.net-mvc-5


【解决方案1】:

我收到 404 的原因是 Area1 web.config 中的 BlockViewHandler。我创建了一个新的 web.config 并放置在我的 Static 文件夹中以解决问题。

<?xml version="1.0" encoding="utf-8"?>
<configuration>  
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <remove name="BlockViewHandler" />     
    </handlers>
  </system.webServer>
</configuration>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多