ASP.NET(VB.NET)实现页面首次加载执行方法避免回发重复执行
ASP.NET(VB.NET) 生成间隔30分钟的时间下拉列表(避免回发重复项)
要解决回发时下拉列表重复添加项的问题,核心就是只在页面首次加载时执行时间项生成逻辑,ASP.NET提供了IsPostBack属性来判断当前请求是否是首次加载,回发时这个属性为True,我们只需要在Not IsPostBack的条件下执行生成代码即可。
完整实现代码
前台页面(.aspx)
先定义下拉列表控件:
<asp:DropDownList ID="ddlTime" runat="server"></asp:DropDownList>
后台代码(.aspx.vb)
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ' 仅在页面首次加载时生成时间项 If Not IsPostBack Then FillTimeOptions() End If End Sub Private Sub FillTimeOptions() ' 先清空列表,确保初始状态干净 ddlTime.Items.Clear() ' 从00:00开始,每次加30分钟,直到23:30 Dim currentTime As TimeSpan = TimeSpan.Zero Dim endTime As TimeSpan = New TimeSpan(23, 30, 0) Dim interval As TimeSpan = New TimeSpan(0, 30, 0) Do While currentTime <= endTime ' 格式化为HH:mm格式的字符串,比如"00:00"、"01:30" Dim displayTime As String = currentTime.ToString("hh\:mm") ' 添加到下拉列表,Text和Value都用格式化后的时间 ddlTime.Items.Add(New ListItem(displayTime, displayTime)) ' 推进30分钟 currentTime = currentTime.Add(interval) Loop End Sub
关键说明
Not IsPostBack:这个判断是核心,确保只有第一次打开页面时才会生成时间项,按钮点击、表单提交等回发操作不会重复执行这段逻辑,自然就不会出现重复项。- TimeSpan处理时间:用TimeSpan来计算时间增量比直接拼接字符串更可靠,能避免手动处理时间进位时的错误。
Items.Clear():虽然首次加载时列表默认是空的,但加上这一步可以避免之前有硬编码项或者测试残留的干扰。
内容的提问来源于stack exchange,提问作者Alex Mo
相关产品推荐
相关产品推荐

