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

本文关键字:调用 getImage 问题 MVC3 Razor | 更新日期: 2023-09-27 18:06:15

我使用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函数(我在调试模式下遵循该过程)。

我浪费了一整天的时间去寻找到底发生了什么。有人能给我点提示吗?

Thanks in advance

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

您正在使用相对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" />