gpt4 book ai didi

c# - ASP.NET C# 作用域问题

转载 作者:太空宇宙 更新时间:2023-11-03 22:19:11 24 4
gpt4 key购买 nike

好吧,我已经厌倦了在 ASP.NET 和 C# 中使用一些简单的东西来掌握 super super 基础知识,而且我很难找到如何解决这个范围问题。至少,我认为这是一个范围问题! :)

所以,这是我的 Default.aspx 演示文稿标记:

<%@ Page Language="C#" Inherits="project1.Tree" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title>project1_test</title>
</head>
<body>
<form runat="server">
<p><asp:label runat="server" id="lblOutput" /></p>
<asp:TextBox ID="txtGrowBy" runat="server" />
<asp:Button id="btnGrow" runat="server" Text="Grow!!!" />
</form>
</body>
</html>

这是我的代码隐藏文件:

using System;
using System.Web;
using System.Web.UI;

namespace project1
{
public partial class Tree : System.Web.UI.Page
{

public int height = 0;

public void Grow(int heightToGrow) {
height += heightToGrow;
}

protected void Page_Load(Object Source, EventArgs E)
{
Tree tree1 = new Tree();

string msg = "Let's plant a tree!<br/>";

msg += "I've created a tree with a height of " +
tree1.height + " metres.<br/>";

lblOutput.Text = msg;
}

public virtual void btnGrowClicked (object sender, EventArgs args)
{
txtGrowBy.Text = tree1.heightToGrow;
}

}
}

现在,我认为问题在于我没有使用 getter 和 sender,但我不是 100% 确定。

最佳答案

我认为你的变量 height 没有在回传之间维护?

这是因为网络是无状态的。除非您将值存储在 Session、ViewState 或 Hidden Fields 中,否则不会在回发之间维护您的变量。因此,您可以执行以下操作来维护 PostBack 之间的 height 值:

ASPX:

<form runat="server">
<asp:HiddenField id="hd_Height" runat="server" />
</form>

代码隐藏:

public int Height
{
get
{
return int.Parse(hd_Height.Value).ToString();
}
set
{
hd_Height.Value = value.ToString();
}
}

关于c# - ASP.NET C# 作用域问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3855535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com