Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 在ASP.NET MVC 3中使用ViewBag从控制器传递图像并在视图中显示_Asp.net Mvc 3_Viewbag - Fatal编程技术网

Asp.net mvc 3 在ASP.NET MVC 3中使用ViewBag从控制器传递图像并在视图中显示

Asp.net mvc 3 在ASP.NET MVC 3中使用ViewBag从控制器传递图像并在视图中显示,asp.net-mvc-3,viewbag,Asp.net Mvc 3,Viewbag,我想这很简单,但我不知道怎么做。在我的控制器中,我有: public ViewResult ShowForm() { ViewBag.Title = Resources.ApplicationTitle; ViewBag.LabelStatus = Resources.Status; //Logo ViewBag.Logo =@"C:\Images\Logo.png";

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

 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>


然而,当我运行这个程序时,我只得到“Logo”文本。

您需要一个ImageController来渲染它

见此:

这是:

拥有控制器后,可以按如下方式渲染:

public class ImageController{

public ActionResult ShowImage(string path) 
{

    return File(path);
}

}
在你看来:

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

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

public ViewResult ShowForm()
{
    //Logo
    ViewBag.Logo = Server.MapPath("~") + @"Content\Images\Logo.png";
    return View("ShowForm");
}
您不必更改视图中的代码。

尝试以下方法:

ViewBag.Logo = Url.Content("~/Content/Images/Logo.png");
public ActionResult ShowForm()
{
ViewBag.Title=Resources.ApplicationTitle;
ViewBag.LabelStatus=Resources.Status;
//标志
byte[]imgbytes=File.ReadAllBytes(@“C:\Images\Logo.png”);
返回文件(imgbytes,“image/png”);
}

我明白了。我希望事情会简单一些,但我猜事情就是这样。谢谢,不客气。依我看,这是最简单的方法,一般来说可以解决你的问题。但是有一种更好的方法,使用图像大小调整工具进行一些设置。确保以最有效的方式提供图像的工具。那么,是在页面加载期间还是在向服务器请求时?图像很可能会保存在服务器上,但是页面内容应该在页面加载之前从数据库中收集,所以我猜是在页面加载过程中。这是一个包含图片的表单,有人已经创建了,当用户要求时,我只需重新绘制。我在我的博客上分享你的代码:非常感谢!!!
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>