如何在ASP.NET MVC3中映射资源路由?

时间:2012-01-25 17:29:12

标签: asp.net-mvc asp.net-mvc-3 routing

有谁知道如何将所有请求/图像重定向到MVC3中的/ Content / images?我只想要某些命名约定。

谢谢,

2 个答案:

答案 0 :(得分:0)

也许您想要永久重定向?有人已经问了同样的问题,答案就在那里:Permanent Redirect Legacy Routes for static files in ASP.Net MVC

答案 1 :(得分:0)

我能给出的最佳答案是不要直接尝试从视图本身请求任何内容。

而是创建HTML帮助程序来处理这些请求,并仅指定这些帮助程序中文件的实际路径。这样,当事物不可避免地四处移动时,你可以在帮助器中改变一次路径,每个视图都可以正常工作。这是我的图像助手的一个例子,我想我从Rob Conery和他惊人的Tekpub MVC样本中偷走了这个。

在这个类中,我声明静态变量pubdir(对于我的内容目录)和imageDir(对于我的内容目录中的图像子文件夹)

  public static string Image(this HtmlHelper helper, string fileName, string attributes)
    {
        fileName = string.Format("{0}/{1}/{2}", pubDir, imageDir, fileName);
        if (string.IsNullOrEmpty(attributes))
        {
            return string.Format("<img src='{0}'/>", helper.AttributeEncode(fileName));
        }
        var temp = string.Format("<img src='{0}' '{1}' />", helper.AttributeEncode(fileName), helper.AttributeEncode(attributes));

        return temp;
    }

当我拥有的是文件名时,我用另一种方法重载了这个。

public static string Image(this HtmlHelper helper, string fileName)
    {
        return Image(helper, fileName, "");
    }

现在,当我想在我的视图中看到一个图像时,我打电话给

 @Html.Image("hello.jpg")

我指定的全部是文件名,图片标签返回给我。 你实际上可以进一步(如果你愿意)并创建一个名为HelloImage的方法,该方法不接受任何参数,你可以在实际方法中指定文件名,只需重命名图像。

我已经做过这样的事情,比如横幅和徽标都可以重复使用。我已经开始为actionlinks做同样的事情,以防控制器,动作和区域被移动或重命名。

http://codingsmith.co.za/extending-the-actionlink-helper-in-mvc/