在 ASP.NET 中切换月份的按钮
Posted
技术标签:
【中文标题】在 ASP.NET 中切换月份的按钮【英文标题】:Buttons to switch between months in ASP.NET 【发布时间】:2012-07-15 22:26:22 【问题描述】:我正在为 ASP.NET 开发日历。我没有使用 Calendar 控件,因为它非常有限。
我想知道如何以编程方式在不同月份之间切换,例如,显示上个月和下个月?
现在我只能更改一个月,然后月份就卡住了:如果先显示 7 月,那么我只能到 6 月。当我在六月并按下下个月按钮时,它会显示八月。 AJAX 会是解决这个问题的好选择吗?
我的代码:
private static DateTime now = DateTime.Today;
protected void Page_Load(object sender, EventArgs e)
protected void btnPrev_Click(object sender, EventArgs e)
lblDateCal.Text = now.AddMonths(-1).ToString("MMMM");
protected void btnNext_Click(object sender, EventArgs e)
lblDateCal.Text = now.AddMonths(+1).ToString("MMMM");
【问题讨论】:
【参考方案1】:每次,您都使用 Now() 将月份递增或递减一。您需要保存当前导航到的月份。例如,将您导航到的最后一个日期保存在 ViewState 中,并在您的点击事件中使用它而不是 Now()。
例如:
protected DateTime UpdateDate(int offset)
DateTime dt;
if (ViewState["LastDate"] == null)
dt = DateTime.Now.AddMonths(offset);
else
dt = ((DateTime)ViewState["LastDate"]).AddMonths(offset);
ViewState["LastDate"] = dt;
return dt;
protected void btnPrev_Click(object sender, EventArgs e)
lblDateCal.Text = UpdateDate(-1).ToString("MMMM");
protected void btnNext_Click(object sender, EventArgs e)
lblDateCal.Text = UpdateDate(1).ToString("MMMM");
否则,如果您更喜欢使用静态变量,那么您需要正确利用静态变量,方法是在每次点击时对其进行设置。也就是说,AddMonths() 方法不会隐式修改你的变量。
例如
protected void btnPrev_Click(object sender, EventArgs e)
now = now.AddMonths(-1);
lblDateCal.Text = now.ToString("MMMM");
protected void btnNext_Click(object sender, EventArgs e)
now = now.AddMonths(+1);
lblDateCal.Text = now.ToString("MMMM");
但是,由于静态变量对应用程序来说是全局的,我认为这不是最好的方法。
这里有一个很好的主题:static variables in asp.net/C#
【讨论】:
感谢您的快速回答!完美运行。【参考方案2】:它发生的原因是因为您使用的是静态 DateTime 变量
请试试这个方法
protected void Page_Load(object sender, EventArgs e)
protected void btnPrev_Click(object sender, EventArgs e)
lblDateCal.Text = DateTime.Today.AddMonths(-1).ToString("MMMM");
protected void btnNext_Click(object sender, EventArgs e)
lblDateCal.Text = DateTime.Today.AddMonths(+1).ToString("MMMM");
【讨论】:
以上是关于在 ASP.NET 中切换月份的按钮的主要内容,如果未能解决你的问题,请参考以下文章
(asp.net) Bootstrap 4 导航栏切换器不工作
asp.net 点击一下文件名或者一个下载按钮,将文件下载下来怎么做啊???