使用MVC 3 ViewBag动态更改图像

时间:2013-01-08 10:43:26

标签: asp.net-mvc-3 visual-studio-2010

我是MVC 3的新手,还在学习。我目前正在构建一个静态的2页网站,它在两个页面上都有不同的图像,但它们位于同一个地方。我被告知我可以使用ViewBag根据我所在的页面更改此图像,但是我还没有从哪里开始将这个应用到我的网站。

任何帮助将不胜感激。感谢您的时间。

4 个答案:

答案 0 :(得分:2)

在控制器的Action方法中,像这样制作ViewBag或ViewData

ViewBag.Imagename="nameofimage";

ViewData["img"]="nameofimage";

在您的视图中,您可以像这样制作img标签

<img src="@ViewBag.Imagename">

或者如果您已创建ViewData

<img src="@ViewData["img"]">

答案 1 :(得分:1)

出于某种原因,当我尝试使用

时,它确实为我工作
@ViewBag.BackgroundImage = "~/Content/images/image.jpg"
...
<img src="@ViewBag.BackgroundImage" />

为我工作的是

@ViewBag.BackgroundImage = "image.jpg"
...
<img src = "~/Content/images/@(ViewBag.BackgroundImage)" />

答案 2 :(得分:0)

个人我不喜欢在控制器中指定任何相关的视图,我在动作方法名称和图像之间使用命名约定:

<img src="~/Content/images/@(ViewContext.RouteData.Values["action"].ToString().ToLower())_img.jpg">

和索引操作方法的图片名称将是“index_img.jpg”

答案 3 :(得分:0)

对于那些想要在viewbag中使用完整路径的人,请使用此

@ViewBag.BackgroundImage = "Content/images/image.jpg"
...
<img src="~/@ViewBag.BackgroundImage" />

"~/"中缺少src="..."的Hallordylo示例无法使用完整路径的原因,并且此符号"~/"不应位于ViewBag中。