在MVC4视图中显示图像
本文关键字:显示图 图像 显示 MVC4 视图 | 更新日期: 2023-09-27 18:07:22
参考这个链接,我使用MessagingToolkit.QRCode.dll创建了一个QR码图像。如何与myLayout在同一视图中显示保存的图像。
控制器代码
[HttpPost]
public ActionResult GenerateExcelQR(string Command, FormCollection collection)
{
if (Command == "Excel")
{
// logic to generate Excel
}
else if(Command =="QRCode")
// qr code logic //
QRCodeEncoder encoder = new QRCodeEncoder();
Bitmap img = encoder.Encode(qrcode);
string path = Server.MapPath("/Images/QRCode.jpg");
img.Save(path, ImageFormat.Jpeg);
return base.File(path,"image/jpeg"); // Displays the QR image without my layout.
// return View(path,"image/jpeg"); // Returns an error specifying "Images'QRCode.jpg' or its master was not found or no view engine supports the searched locations."
}
如何在布局的同一视图中显示QRCode图像。
任何建议。
编辑ImageModel.cs
public static class ImageModel
{
public static string Image(this HtmlHelper htmlHelper, string path, string alt)
{
var img = new TagBuilder("img");
img.MergeAttribute("src", path);
img.MergeAttribute("alt", alt);
return img.ToString(TagRenderMode.SelfClosing);
}
}
在
@model IEnumerable<SampleECommerce.Models.CheckoutModel> // reference to 1st model to return values
@using SampleECommerce.Models; // for Imagemodel
您应该返回的不是一个文件,而是一个视图,并在视图中呈现您的图像。这里Image -是一个html帮助器:
public static HtmlString Image(this HtmlHelper helper, string path, string alt)
{
var img = new TagBuilder("img");
img.MergeAttribute("src", path);
img.MergeAttribute("alt", alt);
return new HtmlString(img.ToString(TagRenderMode.SelfClosing));
}
然后在视图中使用:
@Html.Image(path_to_your_image, "Description")
在控制器中只使用return View();
要使用这个助手,你应该在你的项目中创建一个文件夹,例如'Helpers'。然后,在这个文件夹中创建一个文件,例如'HtmlImageHelper.cs',然后把helper的内容放在这个文件中。在这之后,在你的视图的顶部写:using YourProjectName.Helpers
。在此之后,您可以使用这个html帮助器来呈现图像