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。