Asp.net mvc 2 Can';t在ASP.NET MVC 2中对区域使用相对路径

Asp.net mvc 2 Can';t在ASP.NET MVC 2中对区域使用相对路径,asp.net-mvc-2,Asp.net Mvc 2,在我的应用程序中,我有一个区域呼叫手机。在这个区域中,我有一个文件夹调用资产,我们在其中放置所有css、javascript和图像 访问视图效果很好 问题是当我访问css、javascript和图像时 在我看来,我不能做这样的事 <img src="Assets/css/styles.css" /> 原因是真正的url是: 是否有一种方法可以映射到静态文件 谢谢, Randall您可能需要这样做: <img src="../../Mobile/Assets/css/sty

在我的应用程序中,我有一个区域呼叫手机。在这个区域中,我有一个文件夹调用资产,我们在其中放置所有css、javascript和图像

访问视图效果很好

问题是当我访问css、javascript和图像时

在我看来,我不能做这样的事

<img src="Assets/css/styles.css" />

原因是真正的url是:

是否有一种方法可以映射到静态文件

谢谢,
Randall

您可能需要这样做:

<img src="../../Mobile/Assets/css/styles.css" />

…取决于当前目录的实际位置。您也可以尝试以下方法:

<img src="~Mobile/Assets/css/styles.css" />


找出实际路径的一个好方法是将资源(在本例中为styles.css)从Project Explorer拖到视图中,然后让Visual Studio为您创建路径。

您可能需要执行以下操作:

<img src="../../Mobile/Assets/css/styles.css" />

…取决于当前目录的实际位置。您也可以尝试以下方法:

<img src="~Mobile/Assets/css/styles.css" />


找出实际路径的一个好方法是将资源(在本例中为styles.css)从Project Explorer拖到您的视图中,然后让Visual Studio为您创建路径。

我提出的解决方案是使用一个简单的IHTTP模块,它将为我重写URL。下面是我为BeginRequest事件实现的方法

void BeginRequest(object sender, EventArgs e)
{
    var context = HttpContext.Current;
    var path = context.Request.Path;

    // Add Areas to the Mobile path, so we don't have to specify it manually.
    // This is mainly for handling static resources that you place in areas.
    if (!path.Contains("Mobile/")) return;
    if (path.EndsWith(".png") ||
        path.EndsWith(".gif") ||
        path.EndsWith(".css") ||
        path.EndsWith(".js") ||
        path.EndsWith(".htm") ||
        path.EndsWith(".cache"))
        context.RewritePath(path.Replace("Mobile/", "Areas/Mobile/"));
}

我提出的解决方案是使用一个简单的IHTTP模块,它可以为我重写URL。下面是我为BeginRequest事件实现的方法

void BeginRequest(object sender, EventArgs e)
{
    var context = HttpContext.Current;
    var path = context.Request.Path;

    // Add Areas to the Mobile path, so we don't have to specify it manually.
    // This is mainly for handling static resources that you place in areas.
    if (!path.Contains("Mobile/")) return;
    if (path.EndsWith(".png") ||
        path.EndsWith(".gif") ||
        path.EndsWith(".css") ||
        path.EndsWith(".js") ||
        path.EndsWith(".htm") ||
        path.EndsWith(".cache"))
        context.RewritePath(path.Replace("Mobile/", "Areas/Mobile/"));
}