如何创建组合列表框、文本框和按钮 asp.net 应用
本文关键字:文本 asp 应用 net 按钮 列表 何创建 创建 组合 | 更新日期: 2023-09-27 17:57:13
我正在.NET平台上设计小型即时通讯应用程序。
我有一个ListBox
,TextBox
和Button
(称为发送)。
当用户单击send button
时,Text of TextBox
将出现在ListBox
上,但用户不应在1分钟内发送3 messages
(消息限制),并且他/她的消息大小应至少包含20个最多140个字符串。
我该怎么做?
下面的示例使用计时器控件,如果您想了解有关在 ASP.NET 中使用计时器的更多信息,请查看 Joe Stagner 的此视频教程。
基本上,我将消息数存储在ViewState中,当该数字达到3时,我启动计时器,该计时器将在1分钟(60 000毫秒)后将ViewState["Messages"]
重置为0,用户再次能够发送更多消息。
.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
也许您可以在页面加载中设置一个隐藏字段,以存储序列化的三个最后请求时间和另一个用于最后一分钟消息计数的时间。
在"单击按钮"事件中,"获取文本框的文本"应用大小限制并验证邮件计数。