加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 23:47:35 所属栏目:asp.Net 来源:网络整理
导读:我发现这个问题 Can’t use relative paths with areas in ASP.NET MVC 2这是我遇到的同样的问题. 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="..." />

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读