mvc4.0 获取验证码(图片异常
mvc4.0 获取验证码(图片错误
cshtml文件
<Image ID="ImageCheck" runat="server" ImageUrl="ValidateCode/GetValidateCode"
ImageAlign="AbsMiddle" ToolTip="看不清,换一个"></Image>
图片显示 X , 应该怎么调用啊。
------解决思路----------------------
直接在浏览器里面输入
http://yoursite/ValidateCode/GetValidateCode
能看到图么?
是不是有错误,什么错误?
------解决思路----------------------
写了个测试程序。
使用部分,在index.aspx中加入
<asp:Image ID="Image1" runat="server" ImageUrl="/ValidateCode/GetValidateCode" />
注意这里加入了 /根节点,因为我的index.aspx在/views/home下,不加 /的话就是相对路径,会去找 /Views/Home/ValidateCode/GetValidateCode 这个路径,是红叉叉。
------解决思路----------------------
在你的浏览器的developer tool里面看看 image控件的img html是不是生成了,路径是什么。
------解决思路----------------------
估计路径不对。
------解决思路----------------------
直接用html <img>也可以。
------解决思路----------------------
<Image ID="ImageCheck" runat="server" ImageUrl="/ValidateCode/GetValidateCode"
------解决思路----------------------
没有字就是你算法的问题了吧,你可以用我的实验一下,再修改。
------解决思路----------------------
那就是你算法的问题了,用我的代码试一试,再修改。
public class ValidateCodeController : Controller
{
//
// GET: /ValidateCode/
public ActionResult Index()
{
return View();
}
public ActionResult GetValidateCode()
{
string checkCode = GetRandomCode(4);
Session["CheckCode"] = checkCode;
return File(CreateImage(checkCode), @"image/Jpeg");
}
private string GetRandomCode(int CodeCount)
{
...... 此处省略
return RandomCode;
}
private byte[] CreateImage(string checkCode)
{
......省略
System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
//history back 不重复
Response.Cache.SetNoStore();//这一句
Response.ClearContent();
//Response.ContentType = "image/Jpeg";
//Response.BinaryWrite(ms.ToArray());
g.Dispose();
image.Dispose();
return ms.ToArray();
}
}
cshtml文件
<Image ID="ImageCheck" runat="server" ImageUrl="ValidateCode/GetValidateCode"
ImageAlign="AbsMiddle" ToolTip="看不清,换一个"></Image>
图片显示 X , 应该怎么调用啊。
------解决思路----------------------
直接在浏览器里面输入
http://yoursite/ValidateCode/GetValidateCode
能看到图么?
是不是有错误,什么错误?
------解决思路----------------------
写了个测试程序。
public class ValidateCodeController : Controller
{
//
// GET: /ValidateCode/
public ActionResult Index()
{
return View();
}
public ActionResult GetValidateCode()
{
string checkCode = GetRandomCode(4);
Session["CheckCode"] = checkCode;
Response.Cache.SetNoStore();//这一句
Response.ClearContent();
return File(CreateImage(checkCode), @"image/Jpeg");
}
private string GetRandomCode(int CodeCount)
{
return "111";
}
private byte[] CreateImage(string checkCode)
{
using (Bitmap bmpOut = new Bitmap(200, 50))
{
Graphics g = Graphics.FromImage(bmpOut);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.FillRectangle(Brushes.Black, 0, 0, 200, 50);
g.DrawString(checkCode, new Font("Verdana", 18), new SolidBrush(Color.White), 0, 0);
using (MemoryStream ms = new MemoryStream())
{
bmpOut.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
byte[] bmpBytes = ms.GetBuffer();
return bmpBytes;
}
}
}
}
使用部分,在index.aspx中加入
<asp:Image ID="Image1" runat="server" ImageUrl="/ValidateCode/GetValidateCode" />
注意这里加入了 /根节点,因为我的index.aspx在/views/home下,不加 /的话就是相对路径,会去找 /Views/Home/ValidateCode/GetValidateCode 这个路径,是红叉叉。
------解决思路----------------------
在你的浏览器的developer tool里面看看 image控件的img html是不是生成了,路径是什么。
------解决思路----------------------
估计路径不对。
------解决思路----------------------
直接用html <img>也可以。
------解决思路----------------------
<Image ID="ImageCheck" runat="server" ImageUrl="/ValidateCode/GetValidateCode"
------解决思路----------------------
没有字就是你算法的问题了吧,你可以用我的实验一下,再修改。
------解决思路----------------------
那就是你算法的问题了,用我的代码试一试,再修改。