在MVC3 Razor中多次调用getImage的问题

时间:2011-08-20 00:22:16

标签: c# asp.net-mvc-3 razor

我正在使用Razor MVC3。我需要在几个视图中显示存储在数据库中的图像(比如更改网站的徽标)。

我使用返回FileContentResult的函数解决了它。例如:

    public FileContentResult GetFile(int id)
    {
        govImage image = db.Image.Single(i => i.imageID == id);
        return File(image.logo, "image", image.fileName);
    }

在视图中,我以这种方式调用函数:

<img id="image" src="GetFile/@ViewBag.ImageIndex" width="112" height="87" alt="Image Example" />

在控制器中,我使用函数的输出加载ViewBag.ImageIndex,就像那样:

ViewBag.ImageIndex = oValid.returnUniqueIndex();

这适用于某些视图,但在其他视图中,即使控制器在ViewBag.ImageIndex中指定了正确的值,也未调用GetFile函数(我在调试模式下跟踪了该过程)。

我失去了整整一天试图找到正在发生的事情。有人可以给我一个线索吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

您正在使用相对URL(GetFile/@ViewBag.ImageIndex),它相对于当前路径而不是根路径。这意味着如果您的GetFile操作是HomeController的成员,那么您的链接将无法使用其他控制器生成的视图。

你应该使用类似的东西:

<img id="image" src="/Controller/GetFile/@ViewBag.ImageIndex" alt="Image Example" />

甚至更好:

<img id="image" src="@Url.Action("GetFile", "ControllerName", new { ViewBag.ImageIndex })" alt="Image Example" />