我正在.NET平台上设计小型即时通讯应用程序。
我有ListBox
,TextBox
和Button
(称为发送)。
当用户点击send button
时,Text of TextBox
上会显示ListBox
,但用户不应在1分钟内发送3 messages
(邮件限制)以及他/她的尺寸消息应该包含最少20个字符串。
我该怎么做?
答案 0 :(得分:1)
以下示例使用计时器控件,如果您想了解有关在ASP.NET中使用计时器的更多信息,请查看Joe Stagner撰写的this视频教程。
基本上我在ViewState中存储消息数量,当该数量达到 3 时,我启动定时器,在1分钟后将ViewState["Messages"]
重置为0(60 000毫秒)并且用户再次能够发送更多消息。
<强> ASPX:强>
<asp:ScriptManager ID="Scriptmanager" runat="server" />
<asp:Timer ID="timer" runat="server" Enabled="false" Interval="60000" OnTick="Tick" />
<asp:UpdatePanel ID="updatePanel" runat="server">
<ContentTemplate>
<asp:TextBox MaxLength="140" ID="txtMessage" runat="server" />
<asp:Button ID="btnSend" runat="server" Text="Send" OnClick="Send" /> <span
id="error" runat="server" style="color: Red;" />
<br />
<asp:ListBox ID="lbMessages" runat="server" Width="240" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="timer" />
</Triggers>
</asp:UpdatePanel>
代码背后:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
ViewState["Messages"] = 0;
}
public void Send(object sender, EventArgs e)
{
error.InnerHtml = string.Empty;
string message = txtMessage.Text;
if (message.Length < 20)
{
error.InnerHtml = "The message should be at least 20 characters long";
return;
}
int messageNumber = (int)ViewState["Messages"];
if (messageNumber < 3)
{
lbMessages.Items.Add(message);
ViewState["Messages"] = ++messageNumber;
if (messageNumber.Equals(3))
timer.Enabled = true;
}
}
protected void Tick(object sender, EventArgs e)
{
ViewState["Messages"] = 0;
timer.Enabled = false;
}
此外,您无需检查代码中的最大长度,文本框中有一个属性 - MaxLength
答案 1 :(得分:0)
也许您可以在页面加载中设置一个隐藏字段,以存储序列化的三个最后请求时间,另一个存储最后一分钟的消息计数。
在单击按钮事件中获取文本框的文本应用您的大小限制并验证消息计数。