显示来自控制器的图像的正确方法

时间:2013-11-01 13:57:01

标签: asp.net-mvc-4 razor-2

我有一个加载图像文件的控制器:

    //
    // GET: /MyController/Image/id
    public ActionResult Image(string id)
    {
        var dir = @"C:\Temp\Images";
        var path = Path.Combine(dir, id + ".png");
        return File(path, "image/png");
    }

在与行动MyController/Page/id的单独视图中,我匆匆赶走了一些html来显示图片:

<img src="../image/@Model.Name" />

然后还有一个链接:

<a href="../image/@Model.Name">
  <img src="../image/@Model.Name" />
</a>

它有效,但我正在寻找一种使用@Html的更好方法,因此resharper可以帮助导航和验证,对于上面的两个。我试过这个:

@Html.RenderAction("Image", "MyController", new { id = Model.Name })

但这不会编译,它说Expression must return a value to render

2 个答案:

答案 0 :(得分:3)

我认为你只是在寻找Url.Action(),它会返回一个动作的URL:

<img src="@Url.Action("Image", "ImageController", new { id = Model.ImageID })" />

答案 1 :(得分:3)

您可以在src属性中使用Url.Action()

 <img src='@Url.Action("Image", "ImageController", new { imageId = Model.Id })' alt='MyImage' />