WPF MVVM制作发送短信小按钮制作发送短信小按钮
最近做一个项目,因为涉及到注册,因此需要发送短信,一般发送短信都有一个倒计时的小按钮,因此,就做了一个,在此做个
记录。
一、发送消息一、发送消息
没有调用公司的短信平台,只是模拟前台生成一串数字,将此串数字输出一下。
在这个部分写了两个类文件:一个是生成随机数,一个是模拟发送此数字的。
1、因为生成几位随机数,是必须要到项目上线之前才能定的,因此,写了一个带参数的函数,如下
/// <summary>
/// 生成随机验证码
/// </summary>
public static class RandomCode
{
/// <summary>
/// 返回一个N位验证码
/// </summary>
/// <param name="N">位数</param>
/// <returns></returns>
public static string RandomCodeCommand(int N)
{
string code = "";
Random random = new Random();
for (int i = 0; i < N; i++)
{
code += random.Next(9);
}
return code;
}
}
2、模拟发送此串数字。
这个类里面用了两个Timer函数,一个是用作Button的倒数显示的,另一个是用作保存这个验证码时长的。
在记录验证码的同时,还需要记录发送验证码的手机号,以防止,用户用第一个手机号点击了发送验证码后,把手机号部分
修改为其他的手机号。
public class SendRandomCode : ViewModelBase
{
private int _interval;//记录倒计时长
private string idCode;//在规定时间内保存验证码
private int idCodeTime;//设置验证码的有效时间(秒)
private int idCodeNum = 6;//设置验证码的位数
public void GetCode(string phoneNum)
{
//获取验证码
timerSend = new Timer(1000);
timerSend.AutoReset = true;
timerSend.Elapsed += Timer_Elapsed;
_interval = SecondNum;
timerSend.Start();
//在验证码有效期内,再次请求验证码,需要先关闭上一次的
if (timerTime != null)
{
timerTime.Close();
timerTime.Dispose();
}
//验证码的有效期
timerTime = new Timer(1000);
timerTime.AutoReset = true;
timerTime.Elapsed += TimerTime_Elapsed;
timerTime.Start();
idCodeTime = SaveTime;
IdCode = RandomCode.RandomCodeCommand(idCodeNum);
PhoneNum = phoneNum;
}