【问题标题】:Pass image from controller and display in a view using ViewBag in ASP.NET MVC 3使用 ASP.NET MVC 3 中的 ViewBag 从控制器传递图像并显示在视图中
【发布时间】:2013-04-22 08:25:57
【问题描述】:

我想这很简单,但我不知道该怎么做。在我的控制器中,我有:

 public ViewResult ShowForm()
        {
            ViewBag.Title = Resources.ApplicationTitle;
            ViewBag.LabelStatus = Resources.Status;
            //Logo
            ViewBag.Logo =@"C:\Images\Logo.png";
            return View("ShowForm");
        }

在我看来,我试试这个:

<div id="drawForm">
<img src="@ViewBag.Logo" alt="Logo" />    
</div>

但是,当我运行它时,我只会得到“徽标”文本。

【问题讨论】:

  • 那么,是在页面加载期间还是对服务器的一些按需请求?
  • 图片很可能会保存在服务器上,但是页面内容应该在页面加载之前从数据库中收集,所以我猜是在页面加载期间。
  • 这是一个包含某人已经创建的图像的表单,我只需要在用户要求时重新绘制它。

标签: asp.net-mvc-3 viewbag


【解决方案1】:

使用Server.MapPath 获取图片的正确路径。假设您的 images 文件夹位于通常包含在 MVC 项目中的 Content 文件夹中。你可以这样做:

public ViewResult ShowForm()
{
    //Logo
    ViewBag.Logo = Server.MapPath("~") + @"Content\Images\Logo.png";
    return View("ShowForm");
}

而且您不必更改视图中的代码。

【讨论】:

  • 我明白了。期待一些更容易的事情,但猜测它就是这样。谢谢
  • 不客气。这是最简单的方法,IMO,通常可以解决您的问题。但是有一种更好的方法,它需要一些设置,使用图像调整工具。确保以最有效的方式提供图片的工具。
【解决方案2】:

试试这个:

ViewBag.Logo = Url.Content("~/Content/Images/Logo.png");

【讨论】:

【解决方案3】:

你需要一个 ImageController 来渲染它。

看这个:

ASP.NET MVC3: Image loading through controller

还有这个: Can an ASP.NET MVC controller return an Image?

一旦你有了一个控制器,你就可以如下渲染:

public class ImageController{

public ActionResult ShowImage(string path) 
{

    return File(path);
}

}

在你看来:

<img src="@Url.Action("Render","Image", new {id =1  // or path })" />

【讨论】:

    【解决方案4】:
    public ActionResult ShowForm()
            {
                ViewBag.Title = Resources.ApplicationTitle;
                ViewBag.LabelStatus = Resources.Status;
                //Logo
               byte[] imgbytes =  File.ReadAllBytes(@"C:\Images\Logo.png");
               return File(imgbytes , "image/png");
            }
    
    <div id="drawForm">
    <img src="controllerName/ShowForm" alt="Logo" />    
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-18
      相关资源
      最近更新 更多