我正在使用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函数(我在调试模式下跟踪了该过程)。
我失去了整整一天试图找到正在发生的事情。有人可以给我一个线索吗?
提前致谢
答案 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" />