【问题标题】:Use MVC 3 ViewBag to dynamically change an image使用 MVC 3 ViewBag 动态更改图像
【发布时间】:2019-08-06 17:44:39
【问题描述】:

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

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

【问题讨论】:

  • 你能发表你的看法吗?

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


【解决方案1】:

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

ViewBag.Imagename="nameofimage";

ViewData["img"]="nameofimage";

在你看来,你可以像这样制作 img 标签

<img src="@ViewBag.Imagename">

或者如果你已经创建了 ViewData

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

【讨论】:

    【解决方案2】:

    由于某种原因,当我只是尝试使用

    时,它确实对我有用
    @ViewBag.BackgroundImage = "~/Content/images/image.jpg"
    ...
    <img src="@ViewBag.BackgroundImage" />
    

    但是对我有用的

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        对于那些想在 viewbag 中使用完整路径的人,使用这个

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

        hallordylo 示例无法使用完整路径的原因在 src="..." 中缺少 "~/" 并且此标志 "~/" 不应在 ViewBag 中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-31
          • 1970-01-01
          • 2012-05-12
          • 2016-05-06
          • 1970-01-01
          • 2022-08-19
          相关资源
          最近更新 更多