我创建了一个视图jpegImage.cshtml
(不是局部视图),它具有jpegImageController
。控制器具有Index
将图像写入输出流的方法。在我的主视图中testimage.cshtml
,我将jpegImage
视图<img src="jpegImage.cshtml" />
命名为,该视图未显示任何图像,而如果通过URL调用该视图http://<server>/jpegImage/Index
,则它将返回图像。
有什么我想念的吗?
下面是我的代码
-----------JpegImageController.cs----------------
public ActionResult JpegImage()
{
Random random = new Random();
string s = "";
for (int i = 0; i < 6; i++)
s = String.Concat(s, random.Next(10).ToString());
this.Session["CaptchaImageText"] = s;
CaptchaImage ci = new CaptchaImage(this.Session["CaptchaImageText"].ToString(),200, 40, "Century Schoolbook");
this.Response.Clear();
this.Response.ContentType = "image/jpeg";
// Write the image to the response stream in JPEG format.
ci.Image.Save(this.Response.OutputStream, ImageFormat.Jpeg);
// Dispose of the CAPTCHA image object.
ci.Dispose();
return View();
}
CaptchaImage is class which is generating the image
--------------jpegImage.cshtml------------
@Html.BeginForm()
--------testImage.cshtml--------------
< img src="@Url.Content("~/views/JpegImage/JpegImage.cshtml")" alt="Captcha" />
删除您的jpegImage.cshtml。没有必要,也不会产生浪费。
将您的JpegImageController.cs操作更改为:
public FileResult JpegImage()
{
Random random = new Random();
string s = "";
for (int i = 0; i < 6; i++)
s = String.Concat(s, random.Next(10).ToString());
Session["CaptchaImageText"] = s;
using (CaptchaImage ci = new CaptchaImage(Session["CaptchaImageText"].ToString(), 200, 40, "Century Schoolbook"))
{
// Write the image to a stream in JPEG format.
var output = new MemoryStream();
ci.Image.Save(output, ImageFormat.Jpeg);
return File(output, "image/jpeg");
}
}
在testImage.cshtml中,只需使用:
<img src="@Url.Action("JpegImage")" alt="Captcha" />
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句