当前位置:  开发笔记 > 编程语言 > 正文

如何获取byte []以在视图上显示为div的背景图像(C#,ASP.NET,MVC)

如何解决《如何获取byte[]以在视图上显示为div的背景图像(C#,ASP.NET,MVC)》经验,为你挑选了0个好方法。

我正在使用MVC框架在C#和ASP.Net中构建Web应用程序。我已经在本地桌面上运行了该应用程序(现在)。该应用程序具有一个SQL后端,用于存储我的所有数据。我能够通过许多存储过程成功地从SQL数据库中提取数据。数据能够成功地从存储过程一直传输到控制器上的所有视图。

正在传输到视图的部分数据是来自存储在db中的图像的byte [](数据类型为VARBINARY(MAX))。简而言之,我试图从此byte []中获取数据以在div中显示为背景图像。该div在Bootstrap轮播中充当单个图像。

最初,我将以下内容用作控制器:

public ActionResult Dashboard()
        {            
            DashboardViewModelHolder holder = new DashboardViewModelHolder(); 
            DiscoveryService discoveryService = new DiscoveryService(); 
            holder.national_Elected_Officials = new List(); 
            National_Elected_Officials_Model n = new National_Elected_Officials_Model();                   
            foreach (List official in discoveryService.retrieve_National_Elected_Officials())
            {                
                for(int i = 0; i <= official.Count; i++)
                {                    
                    int id = int.Parse(official.ElementAt(0).ToString()); 
                    string fname = official.ElementAt(1).ToString();
                    string lname = official.ElementAt(2).ToString();
                    byte[] pictureByteArray = (byte[])official.ElementAt(3);
                    string position = official.ElementAt(4).ToString();
                    string party = official.ElementAt(5).ToString();
                    string bio = official.ElementAt(6).ToString();
                    int yearsOfService = int.Parse(official.ElementAt(7).ToString());
                    int terms = int.Parse(official.ElementAt(8).ToString());
                    string branch = official.ElementAt(9).ToString();                   

                    Image picture = image_Adapter.byteArrayToImage(pictureByteArray);                              

                    n.ElectedOfficialID = id;
                    n.FirstName = fname;
                    n.LastName = lname;
                    n.Picture = picture;
                    n.Position = position;
                    n.Party = party;
                    n.Bio = bio;
                    n.YearsOfService = yearsOfService;
                    n.Terms = terms;
                    n.Branch = branch; 
                }
                holder.national_Elected_Officials.Add(n);                
            }
            return View(holder);
        }


我的想法是,在我看来,我将只调用n.Picture,它将渲染该图片。经过几次尝试和教程之后,我将n.Picture保留为byte [],并在其自己的ActionResult方法中对其进行了处理,如下所示:

public FileContentResult Image(byte[] pictureByteArray)
        {            
            return new FileContentResult(pictureByteArray, "image/jpeg");
        }

我将其称为以下内容:

当选Official是对在控制器(n.Picture)中设置的模型的引用。

有什么我想念的吗?

编辑1

我忘了补充一点,当我调试并逐步执行代码时,div返回null。这是因为调试时永远不会调用div所在的行。如果我将其设置为Url.Action,则该程序实际上将在上线之前进入控制器。如果我执行Html.Action,则程序将跳过该行,然后转到控制器。两者都将返回null,其结果是在控制器端返回错误,因为允许使用null。

编辑2 我尝试将div标签更改为以下内容:

通过将{}放入调试器,实际上可以在我逐步调试时解析该行。现在,问题在于控制器没有接收到来自所选择的Official.Picture传递给它的值。只是为了确认,此变量确实在视图中保留了正确的值。

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有