MVC3学习:利用jquery+ajax生成二维码(支持中文)

二维码越来越热火了,做电子商务网站,不做二维码,你就OUT了。

一、下载DLL文件(ThoughtWorks.QRCode.dll),并在项目中引用。点此下载

如果你还不知道什么是QRCode二维码,,请移步http://www.cnblogs.com/beasy/archive/2008/06/27/1230991.html

二、视图View

@{
    ViewBag.Title = "Index";
}
<script type="text/javascript">
    $(function () {
        $("#btn").click(function () {
            var qrText = $.trim($("#txt").val());
            $.post("default/SetQRCode", { qrText: qrText },
            function (data) {
                if (data == "-1") { alert("生成二维码失败"); return false; }
                else {
                    $("#qrimg").css("display", "block");
                    $("#qrimg").attr("src", data);
                }
            });
        });
    });

</script>

<h2>生成二维码</h2>
<label>输入二维码信息:</label><input type="text" id="txt" />
<input type="button" id="btn" value="生成二维码" />
<br />
<br />
<img src="" alt="二维码" id="qrimg" style="border:0;display:none" />

将需要做成二维码的文本,通过ajax传递到控制器中的SetQRCode中进行处理,生成二维码图。

三、控制器(default/SetQRCode)

先在控制器中添加命名空间

using ThoughtWorks.QRCode.Codec;
using System.Drawing.Imaging;
using System.IO;
using System.Text;

然后编写Action

 public ActionResult SetQRCode(string qrText)
        {
            try
            {
                if (Request.IsAjaxRequest())
                {
                    //设置编码方式为Byte。也可以设置为AlphaNumeric或Numeric
                    QRCodeEncoder encoder = new QRCodeEncoder();
                    encoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
                    //设置大小为4
                    encoder.QRCodeScale = 4;
                    //设置版本为8
                    encoder.QRCodeVersion = 8;
                    //设置纠错能力级别为M,也可以设置为H、L或Q
                    encoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
                    //数据内容编码
                    System.Drawing.Bitmap img = encoder.Encode(qrText,Encoding.UTF8);
                    //图片名称
                    string filename = Guid.NewGuid().ToString() + ".gif";
                    //图片路径
                    string rootPath = "../Content/upload/";
                    string path = Server.MapPath(rootPath);
                    if (!Directory.Exists(path))
                        Directory.CreateDirectory(path);
                    string filepath = path + filename;
                    //生成图片文件
                    FileStream fs=new FileStream(filepath,FileMode.OpenOrCreate,FileAccess.Write);
                    img.Save(fs, System.Drawing.Imaging.ImageFormat.Gif);
                    fs.Dispose();
                    img.Dispose();
                    //返回图片路径
                    return Content(rootPath + filename);
                }
                else
                    return Content("-1");

            }
            catch
            {
                
                return Content("-1");
            }
        }

只需要三步,二维码就生成了,是不是很简单呢?

快用你的智能手机来扫描看看吧

原文地址:https://www.cnblogs.com/denny402/p/3234107.html