gpt4 book ai didi

c# - 私有(private)变量在方法之间重置 c#

转载 作者:太空狗 更新时间:2023-10-29 22:23:22 24 4
gpt4 key购买 nike

这可能是有史以来最大的菜鸟问题,但我很困惑为什么我的私有(private)变量在一种方法中设置时会在另一种方法中重置。我的代码中有这样的内容:

namespace Project.Messages
{
public partial class Inbox : System.Web.UI.Page
{

private static int selectedIndex;
private static string messageIDString;
private static int messageID;

//select message to view
protected void viewMessage(object sender, GridViewCommandEventArgs e)
{
//get index
selectedIndex = MsgInbox.SelectedIndex;
if (int.TryParse(e.CommandArgument.ToString(), out selectedIndex))
{
//get selected dataKey, convert to a int
messageIDString = MsgInbox.DataKeys[selectedIndex].Value.ToString();
messageID = Convert.ToInt16(messageIDString);
}
}

//select message to delete
protected void delBTN_Click(object sender, EventArgs e)
{

SqlCommand com = new SqlCommand("DELETE FROM Messages WHERE MessageID = @param1", conn);
conn.Open();

com.Parameters.AddWithValue("param1", messageID);
}

因此,如果我单击一条消息,将设置 messageID 并显示该消息。但是,当我在那之后单击删除消息时,变量似乎正在重置/与之前设置的值不同。我是否需要使用静态变量或其他方式来实现此目的?

谢谢

最佳答案

这就是行为。当有回发时,所有变量都被重置并重新分配。您可以使用 session 或 View 状态或将值存储在页面上已经是 View 状态一部分的控件中,例如在一个隐藏的领域

public int messageID
{
get
{
int retVal = 0;
if(ViewState["messageID"] != null)
Int32.TryParse(ViewState["messageID"].ToString(), out retVal);

return retVal;
}
set { ViewState["messageID"] = value; }
}

关于c# - 私有(private)变量在方法之间重置 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13076646/

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