C# mvc-从数据库获取图像并显示到详细信息视图

C# mvc-从数据库获取图像并显示到详细信息视图,c#,sql,image,model-view-controller,byte,C#,Sql,Image,Model View Controller,Byte,型号: public byte[] TECH_IMAGE { get; set; } //DETAILS public ActionResult Details(int? id) { if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); tblTechDeployment tech = db.tblTechDeploy

型号:

public byte[] TECH_IMAGE { get; set; }
//DETAILS
    public ActionResult Details(int? id)
    {
        if (id == null)
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            tblTechDeployment tech = db.tblTechDeployments.Find(id);

        if (tech == null)
            return HttpNotFound();
        return View(tech);

        var i = db.tblTechDeployments.Find(id);
        var vm = new tblTechDeployment
        {
            TECH_IMAGE = "data:image/png;base64," + Convert.ToBase64String(i.TECH_IMAGE)
        };

        //var image = (from i in db.tblTechDeployments
        //             select i.TECH_IMAGE).FirstOrDefault();
        //var stream = new MemoryStream(image.ToArray());
        //return new FileStreamResult(stream, "image/jpeg");
    }
    <dt>
        @Html.DisplayNameFor(model => model.TECH_IMAGE)
    </dt>

    <dd>
        @*@Html.DisplayFor(model => model.TECH_IMAGE)*@<img     src="@Model.TECH_IMAGE" />
    </dd>
控制器:

public byte[] TECH_IMAGE { get; set; }
//DETAILS
    public ActionResult Details(int? id)
    {
        if (id == null)
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            tblTechDeployment tech = db.tblTechDeployments.Find(id);

        if (tech == null)
            return HttpNotFound();
        return View(tech);

        var i = db.tblTechDeployments.Find(id);
        var vm = new tblTechDeployment
        {
            TECH_IMAGE = "data:image/png;base64," + Convert.ToBase64String(i.TECH_IMAGE)
        };

        //var image = (from i in db.tblTechDeployments
        //             select i.TECH_IMAGE).FirstOrDefault();
        //var stream = new MemoryStream(image.ToArray());
        //return new FileStreamResult(stream, "image/jpeg");
    }
    <dt>
        @Html.DisplayNameFor(model => model.TECH_IMAGE)
    </dt>

    <dd>
        @*@Html.DisplayFor(model => model.TECH_IMAGE)*@<img     src="@Model.TECH_IMAGE" />
    </dd>
详细信息视图:

public byte[] TECH_IMAGE { get; set; }
//DETAILS
    public ActionResult Details(int? id)
    {
        if (id == null)
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            tblTechDeployment tech = db.tblTechDeployments.Find(id);

        if (tech == null)
            return HttpNotFound();
        return View(tech);

        var i = db.tblTechDeployments.Find(id);
        var vm = new tblTechDeployment
        {
            TECH_IMAGE = "data:image/png;base64," + Convert.ToBase64String(i.TECH_IMAGE)
        };

        //var image = (from i in db.tblTechDeployments
        //             select i.TECH_IMAGE).FirstOrDefault();
        //var stream = new MemoryStream(image.ToArray());
        //return new FileStreamResult(stream, "image/jpeg");
    }
    <dt>
        @Html.DisplayNameFor(model => model.TECH_IMAGE)
    </dt>

    <dd>
        @*@Html.DisplayFor(model => model.TECH_IMAGE)*@<img     src="@Model.TECH_IMAGE" />
    </dd>
在“详细信息”视图中也是这样

控制器中注释掉的4行是我在网络中找到的另一种方式。但我不能让它工作。还是我做得不对

此外,该代码:

var i = db.tblTechDeployments.Find(id);
    var vm = new tblTechDeployment
    {
        TECH_IMAGE = "data:image/png;base64," +     Convert.ToBase64String(i.TECH_IMAGE)
    };
我得到一个错误:

无法将类型字符串隐式转换为字节


如何将存储在数据库中的图像显示到详细信息视图中?

TECH\u image
属性是一个字节数组,您正在尝试将Base64格式的图像元数据添加到其中。不要重新分配字节数组,而是尝试提供字符串属性作为目标分配,例如:
var vm=new-tblTechDeployment{Image=“data:Image/png;base64,”+Convert.ToBase64String(i.TECH_Image)}您只需添加新的字符串属性类型并将该属性指定给视图。您也可以使用viewbag或viewdata。