如何实现ASP.NET中在页面视图与按钮点击事件间切换的功能?

2026-04-24 16:003阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计614个文字,预计阅读时间需要3分钟。

如何实现ASP.NET中在页面视图与按钮点击事件间切换的功能?

我感觉到自己在这方面缺乏一些关键知识。我已经尝试过查看http://msdn.microsoft.com/en-us/magazine/cc300437.aspx上的指南,但在谷歌上也找不到具体做法。我有一些非常基础的代码,只是写了试图让它工作的代码:

我觉得我在这里缺少一些关键.

我已经尝试过关注msdn.microsoft.com/en-us/magazine/cc300437.aspx的指南
在谷歌,但我看不到我没有做的.

我有一些非常基本的代码,我写的只是试图让它工作:

Default.aspx代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" EnableSessionState="True" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="www.w3.org/1999/xhtml"> <head runat="server"> <title>Demo Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="myLabel" runat="server" Text="foo"></asp:Label> <asp:LinkButton ID="lnkClickButton" runat="server" OnClick="lnkClickButton_Click" CommandName="Clicky">Click Me</asp:LinkButton> </div> </form> </body> </html>

Default.aspx.cs代码:

using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Session["clickcount"] = 0; Cache["clickscount"] = 0; } protected void lnkClickButton_Click(object sender, EventArgs e) { Session["clickcount"] = (int)Session["clickcount"] + 1; Cache["clickscount"] = (int)Cache["clickscount"] + 1; Label myLabel = ((Label)this.FindControl("myLabel")); if (myLabel != null) { myLabel.Text = "Session: " + Session["clickcount"] + "; Cache: " + Cache["clickscount"] + ";"; } } }

我已经尝试使用会话对象和缓存对象来增加值,但无济于事.我每次都得1分.

注:这是我的第一个asp.net项目,我也是c#的新手.

每次回发都会运行Page_Load以及初始加载.您需要在Page_Load中指定不回发:

protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack){ Session["clickcount"] = 0; Cache["clickscount"] = 0; } }

更好的是,指定只有在它还没有值的情况下才应该设置它:

protected void Page_Load(object sender, EventArgs e) { if (Session["clickcount"] == null){ Session["clickcount"] = 0; } }

只是为了澄清,如果没有设置值,最好只设置值是每次有人直接访问页面时Page.IsPostBack为false.比如说你有你的页面example.com/Demo/Default.aspx,并且在顶部有一个你在logo here中包装的徽标,每当有人点击徽标时会重置会话,即使他们实际上没有离开页面.如果他们在浏览器上刷新而没有重新发布最后一篇文章也会发生.

如何实现ASP.NET中在页面视图与按钮点击事件间切换的功能?

本文共计614个文字,预计阅读时间需要3分钟。

如何实现ASP.NET中在页面视图与按钮点击事件间切换的功能?

我感觉到自己在这方面缺乏一些关键知识。我已经尝试过查看http://msdn.microsoft.com/en-us/magazine/cc300437.aspx上的指南,但在谷歌上也找不到具体做法。我有一些非常基础的代码,只是写了试图让它工作的代码:

我觉得我在这里缺少一些关键.

我已经尝试过关注msdn.microsoft.com/en-us/magazine/cc300437.aspx的指南
在谷歌,但我看不到我没有做的.

我有一些非常基本的代码,我写的只是试图让它工作:

Default.aspx代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" EnableSessionState="True" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="www.w3.org/1999/xhtml"> <head runat="server"> <title>Demo Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="myLabel" runat="server" Text="foo"></asp:Label> <asp:LinkButton ID="lnkClickButton" runat="server" OnClick="lnkClickButton_Click" CommandName="Clicky">Click Me</asp:LinkButton> </div> </form> </body> </html>

Default.aspx.cs代码:

using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Session["clickcount"] = 0; Cache["clickscount"] = 0; } protected void lnkClickButton_Click(object sender, EventArgs e) { Session["clickcount"] = (int)Session["clickcount"] + 1; Cache["clickscount"] = (int)Cache["clickscount"] + 1; Label myLabel = ((Label)this.FindControl("myLabel")); if (myLabel != null) { myLabel.Text = "Session: " + Session["clickcount"] + "; Cache: " + Cache["clickscount"] + ";"; } } }

我已经尝试使用会话对象和缓存对象来增加值,但无济于事.我每次都得1分.

注:这是我的第一个asp.net项目,我也是c#的新手.

每次回发都会运行Page_Load以及初始加载.您需要在Page_Load中指定不回发:

protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack){ Session["clickcount"] = 0; Cache["clickscount"] = 0; } }

更好的是,指定只有在它还没有值的情况下才应该设置它:

protected void Page_Load(object sender, EventArgs e) { if (Session["clickcount"] == null){ Session["clickcount"] = 0; } }

只是为了澄清,如果没有设置值,最好只设置值是每次有人直接访问页面时Page.IsPostBack为false.比如说你有你的页面example.com/Demo/Default.aspx,并且在顶部有一个你在logo here中包装的徽标,每当有人点击徽标时会重置会话,即使他们实际上没有离开页面.如果他们在浏览器上刷新而没有重新发布最后一篇文章也会发生.

如何实现ASP.NET中在页面视图与按钮点击事件间切换的功能?