【问题标题】:pass the value of a variable to another method C#将变量的值传递给另一个方法 C#
【发布时间】:2020-12-30 09:02:56
【问题描述】:

我是编程新手。如何将变量的值传递给另一个方法?代码变量得到一个值,但是当方法退出时,它被重置为零。我需要将 visitcode 变量设置为 code 变量的值。我试过在公共类中声明一个代码变量,但它也不起作用。我是这样做的

public partial class _Default : System.Web.UI.Page
Int32 code = new Int32();



protected void Repeater1_OnItemCommand(object source, RepeaterCommandEventArgs e)
{
    if (e.CommandName == "visitcode")
    {
        Int32 code = Convert.ToInt32(e.CommandArgument);
    }
}

protected void button1_click(object sender, EventArgs e)
{
    string num = number.Value;
    string document = doc.Value;
    string format = "yyyy-MM-dd HH:mm:ss:fff";
    string stringDate = DateTime.Now.ToString(format);
    string visitcode = code
}

【问题讨论】:

  • 在这个类中声明private int code;。然后写code = Convert.ToInt32(e.CommandArgument);。但请记住,在 Web 应用程序中,变量值不会在请求之间保持不变(除非它们是视图状态中的表单字段或会话变量),因此您可能会发现在按钮中单击仍然没有填充。
  • @Steve 我认为Repeater 的使用清楚地将其标记为WebForms(因此必须是.NET Framework,而不是Core)
  • 如果您想显示更多代码,请edit提出您的问题。
  • @zaknafein 顺便说一句,如果您是编程新手,我不建议您学习 WebForms,因为您似乎正在这样做。这是 20 年前的一项遗留技术,甚至在新的 .NET 5 中都不可用。相反,学习一个更新的 Web 框架,如 Razor Pages、Blazor 甚至 MVC,它有未来,也可以利用更新的技术以及 .NET 和 Web 的总体改进。 (如果您完全不熟悉编程,请先从简单的 C# 控制台应用程序开始,然后再添加基于 Web 的环境的复杂性。)
  • 感谢您的更新...其中一个问题是,在Int32 code = Convert.ToInt32(e.CommandArgument); 中,当您已经在类中声明了另一个变量时,您正试图声明一个新变量code。只需从行首删除Int32。但是,请记住我关于变量在请求之间持续存在的评论,它可能仍然不起作用。试试史蒂夫发布的教程。 ....但说真的,如果你在这件事上有任何选择,请彻底放弃这个项目,学习一项更新的技术。

标签: c# asp.net webforms


【解决方案1】:

每个 HTTP 请求都被视为一个新请求,这意味着您的“代码”变量每次到达服务器时都会被清除,因此 ASP.NET WebForms 提供了一种在会话变量中存储临时值的方法。

您的代码可能如下所示:

protected void Repeater1_OnItemCommand(object source, RepeaterCommandEventArgs e)
{
    if (e.CommandName == "visitcode")
    {
        Session["Code"] = e.CommandArgument;
    }
}

在第二个请求中,您可以按如下方式检索该值:

protected void button1_click(object sender, EventArgs e)
{
    ...
    string visitcode = Session["Code"];
}

正如我所提到的,会话变量是临时的,所以你必须验证你的值是否不同于 NULL,如果是,则意味着会话结束。

希望对你有用

【讨论】:

  • 谢谢。有用!但每次刷新页面时,都会在数据库中创建一条记录。我试图关闭会话 Session.Clear(),然后应用程序崩溃并出现错误。刷新页面时,我需要重置会话。但是当单击按钮时,值会更新并按我的需要工作
  • 如果我清除变量然后刷新页面时出错:对象引用不指向对象的实例。
  • WebForms 自然地与服务器控件一起工作。每次与按钮、复选框等的交互都会向服务器提出一个请求,因此有一个标志 (IsPostBack) 来了解页面是第一次加载还是用户正在使用它。您必须像这样在 Page_Load 方法中进行验证: if(!IsPostBack){ //第一次加载页面时执行的代码 }
猜你喜欢
  • 2012-12-21
  • 1970-01-01
  • 2022-01-15
  • 2012-01-07
  • 2016-08-09
  • 1970-01-01
  • 2021-04-12
  • 2021-04-21
  • 1970-01-01
相关资源
最近更新 更多