我在数据库中以二进制格式存储了一些图像,现在我想在我的视图中显示这些图像,我们如何将这些图像从二进制格式再次转换为图像格式?
这是我在控制器中的动作menthod
public ActionResult DislpayAllImage()
{
DataSet dsa = new DataSet();
dsa = objImage.getAllImages();
DataTable dt = new DataTable();
dt = dsa.Tables[0];
if (dt != null)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
Byte[] image = (Byte[])dt.Rows[i]["UsImage"];
return File(image, "image/jpg");
}
}
return View();
}
这是我在模型中的代码
public DataSet getUserImage(int Id)
{
DataSet ds = new DataSet();
try
{
DbCommand db = dbcon.GetStoredProcCommand("GetImage");
dbcon.AddInParameter(db, "@Id", DbType.Int16, Id);
db.CommandType = CommandType.StoredProcedure;
return ds = dbconstr.ExecuteDataSet(dbCmd);
}
catch(Exception ex)
{
return ds = null;
}
}
视图
@foreach( var image in ViewData.Images )
{
<img src="@Url.Action("DislpayImage", "Home",new { id = image.ImageID })" />
}
如何在剃刀视图中显示我的图像,上面的代码也正常?
答案 0 :(得分:2)
您需要从View中调用Controller的动作(DislpayImage()
),如下所示:
<img src="<%= Url.Action("DislpayImage", "Controller") %>" alt="myimage" />
或
<img src="@Url.Action("DislpayImage", "Controller")" alt="myimage" />
希望它对你有所帮助。
修改强>
只需将要显示的图像的ID传递给Controller操作
public ActionResult DislpayImage(int id)
{
DataSet dsa = new DataSet();
dsa = objImage.getUserImage(id);
var imagedata = dsa.Tables[0].Columns["MyImage"];
return File(imagedata, "image/jpg");
}
现在传递要在视图中显示的图像的ID,如下所示:
<img src="@Url.Action("DislpayImage", "Controller", new { id="2" })" alt="myimage" />
现在,您将获得ID为2的图像。
答案 1 :(得分:0)
<% foreach( var image in ViewData.Images ) { %>
<%= Html.Image( Url.Action( "Show", "Image", new { id = image.ImageID } ) ) %>
<% } %>
public class ImageController : Controller
{
public void Show(string id)
{
Image image = GetImage(id);
Response.Buffer = True;
Response.Clear();
Response.ContentType = "image/gif";
Response.BinaryWrite( image.Data );
Response.End();
}
}
此回复只是其他论坛答案的副本。 这不是我自己的。我在这里粘贴它来帮助你和这个论坛的其他人 同样的问题。