asp.net-mvc – MVC3区域中的相对内容路径

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – MVC3区域中的相对内容路径前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我发现这个问题 Can’t use relative paths with areas in ASP.NET MVC 2这是我遇到的同样的问题. MVC3还是这样吗?

有没有办法将内容文件保存在相对于该区域的区域?

所以一个区域中的布局文件可以有类似的东西

无需做出完全限定的链接,需要区域目录和区域名称或上述问题的解决方案,需要在每个请求上检查每个区域.

更新/编辑

我决定使用上述问题中的解决方案和下面的解决方案(html帮助器) – 这取决于项目/情况.我的上述实现使用app.setting来存储区域名称和扩展名,以便我可以将该模块作为我的库的一部分.

var context = HttpContext.Current;
var path = context.Request.Path;
var list = ...       //code that gets from app.config and then saves it
var extensions = ... // to the cache as non-removable with a dependency on web.config
foreach (var area in list)
{
   if (!path.Contains(area + "/")) continue;
   foreach (var extension in extensions)
   {
      if (path.EndsWith("." + extension))
      {
         context.RewritePath(path.Replace(area + "/","Areas/" + area + "/"));
      }

    }
 }

解决方法

您可以尝试在HtmlHelper上创建一个扩展来解决这个问题:
public static string Image(this HtmlHelper html,string imagePath)
{
    var area = html.ViewContext.RouteData.Values["area"];
    if (!string.IsNullOrEmpty(area))
        area = "Areas/" + area + "/";
    return VirtualPathUtility.ToAbsolute("~/" + area + "Content/img/" + imagePath);
}

所以在你看来你可以使用:

<img src="@Html.Image("myimage.png")" alt="..." />

如果我错了,我没有尝试这样正确的代码.

猜你在找的asp.Net相关文章