如何将“/ img /”路由到ASP.NET MVC 3中的“/ Content / img”文件夹?

时间:2011-07-02 22:31:16

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

我希望我的ASP.NET MVC应用程序中的所有图像的URL都具有以下形式:

www.mydomain.com/img/someimagename.png

但是,我目前在我的MVC项目中拥有所有图像: / Content / img / folder。

如何编写将/ img映射到/ Content / img?

的路由

3 个答案:

答案 0 :(得分:5)

图像不会通过ASP.NET堆栈。 IIS处理这些请求。如果希望ASP.NET应用程序处理图像请求,则需要编写HttpModule。此博客向您展示如何执行此操作: http://weblogs.asp.net/jgaylord/archive/2009/05/04/letting-asp-net-handle-image-file-extensions-in-iis-6.aspx

但更简单的解决方案是在IIS中创建一个虚拟目录。

答案 1 :(得分:4)

您可以使用重写规则。在web.config中添加以下路由到重写部分:

<rule name="Img to content img">
 <match url="^img/(.*)" />
 <action type="Rewrite" url="/Content/img/{R:1}" />
</rule>

答案 2 :(得分:2)

这种方法怎么样,

 public ActionResult Img(string imgURL)
    {
        ViewBag.imageURL = imgURL;
        return View();
    }

和剃刀视图

<img src="@Url.Content("~/Content/images/"+@ViewBag.imageURL)" />

或在基本的asp.net视图中

 <img src="~/Content/images/"+ViewBag.imageURL)" />