C# 使用asp时,我将对象放在哪里
我对C#和VS比较陌生,目前正在玩ASP.NET,但我似乎对应该将需要在webforms中使用的对象放置在何处感到非常困惑。作为一个非常基本的示例,如何添加计数器按钮?使用下面的代码,当您单击按钮时,没有任何变化,文本框仅显示计数为2'。我认为这是因为页面每次都在重新加载,因此计数器对象被“重新”实例化。那么我如何避免这种情况呢 Default.aspx Counter.csC# 使用asp时,我将对象放在哪里,c#,asp.net,visual-studio,C#,Asp.net,Visual Studio,我对C#和VS比较陌生,目前正在玩ASP.NET,但我似乎对应该将需要在webforms中使用的对象放置在何处感到非常困惑。作为一个非常基本的示例,如何添加计数器按钮?使用下面的代码,当您单击按钮时,没有任何变化,文本框仅显示计数为2'。我认为这是因为页面每次都在重新加载,因此计数器对象被“重新”实例化。那么我如何避免这种情况呢 Default.aspx Counter.cs public class Counter { public int CurrentCount { get; p
public class Counter
{
public int CurrentCount { get; private set; }
public Counter()
{
CurrentCount = 0;
}
public void CountUp()
{
CurrentCount++;
}
}
我可能完全误解了这一点,但当我使用WinForms时,我会将对象包含在表单代码中。您应该将其保存在页面中,因为这是唯一一个不受会话限制的基于用户的持久存储(您可以多次打开同一页面) 请稍后检索:
YourClass yourObject = (YourClass)this.ViewState["someVar"];
您是正确的,页面每次都在加载,因此每次单击按钮时都会将计数器重置为零 有很多方法可以解决这个问题,最简单的方法可能是使用Session[“counter”]对象来存储计数器并在页面加载时重新加载它 但是,由于您是新手,我建议您放弃这种asp.net风格,转而学习新的MVC版本
这有一种不同的方法,可以避免asp.net(webforms)的许多页面生命周期问题,尽管您仍然需要将计数器存储在服务器上,或者存储在发送给用户的页面响应中,以便可以将计数器发送回查询字符串、cookie或任何内容中。此外,请确保在页面声明中启用了ViewState。最后,如果您可以避免ViewState,请这样做-这可以使12k HTML页面变成怪物大小。在客户端使用javascript增加计数器值比使用多个服务器往返要容易得多。这是一个更好的练习模式。
public class Counter
{
public int CurrentCount { get; private set; }
public Counter()
{
CurrentCount = 0;
}
public void CountUp()
{
CurrentCount++;
}
}
this.ViewState["someVar"] = yourObject;
YourClass yourObject = (YourClass)this.ViewState["someVar"];