拦截所有相对路径

时间:2009-09-18 19:20:00

标签: asp.net-mvc path

是否可以拦截应用程序中使用的所有和任何相对路径,并在评估绝对路径之前删除/编辑其中的一部分?

示例:

在mvc view page-

<%= Html.Image("~/{somefolder}/logo.png") %>

我想截取相对路径“〜/ {somefolder} /logo.png”并将“{somefolder}”替换为通过某种逻辑检索的文件夹位置(数据库,if / else等)。

1 个答案:

答案 0 :(得分:2)

你可以创建一个帮助你做到这一点。

例如......

public static string LinkedImage(this HtmlHelper html, string url)
{
  Regex regex = new Regex("({(.*?)})");//This is off the top of my head regex which will get strings between the curly brackets/chicken lips/whatever! :).
  var matches = regex.Matches(url);

  foreach (var match in matches)
  {
    //Go get your value from the db or elsewhere
    string newValueFromElsewhere = GetMyValue(match);
    url = url.Replace(string.Format("{{0}}", match), newValueFromElsewhere);
  }

  return html.Image(url);
}

在寻求解决网址问题方面,您可能希望在Stephen Walther的博客上查看here