【问题标题】:Increment int on button click c# asp.net在按钮上增加int单击c#asp.net
【发布时间】:2013-06-13 14:19:50
【问题描述】:

我试图在每次单击按钮时增加整数,我正在使用视图状态为我的 int 赋值,但它不起作用。这是我的代码示例

 public int par
{
    get
    {
        if (ViewState["par"] == null)
        {
            ViewState["par"] = 2;
        }
        return (int)ViewState["par"];
    }

    set
    {
        ViewState["par"] = value;
    }
}

和按钮点击事件:

 protected void LoadMore_Click(object sender, EventArgs e)
{
    try
    {
        this.par = this.par + 1;
        loadNews(Convert.ToInt32(this.par));

    }

    catch (Exception ex)
    {

        Response.Write(ex);
    }
}

问题是第一次点击时数字加一,但在下一次点击时没有任何反应..

【问题讨论】:

  • “不起作用”信息不足。
  • 很好,请问有什么问题?
  • 您是否为您的应用程序启用了视图状态?
  • 在按钮单击中执行不依赖于视图状态的其他操作,例如将一些文字文本写入响应。我的猜测是您没有正确创建按钮或添加事件处理程序,因此整个点击处理程序没有运行。
  • 这意味着如果您处于用户控制之下,则在页面级别或 userControl 级别未启用视图状态,或者您将页面加载时的值设置为 null 或 2。

标签: c# asp.net


【解决方案1】:
private int number = 0;
public int par
{
    get
    {
        return number;
    }
    set
    {
        number = value;
    }
}

protected void LoadMore_Click(object sender, EventArgs e)
{
    number++;
    lblShow.Text = par.ToString();

    try
    {
        loadNews(par);
    }
    catch(Exception ex)
    { 
        lblShow.Text += ex.Message; 
    }
}

【讨论】:

  • 这总是返回 1 而不是增量。
  • 我认为唯一应该增加的是Click 事件?
  • @JPHellemons 这个问题是在 Asp.Net 的上下文中提出的。本地类字段不会在点击事件中持续存在。
【解决方案2】:
int number= 0;
protected void btnIncrement_Click(object sender, EventArgs e)
{
    number++;
    ViewState["number"] = Convert.ToInt32(ViewState["number"]) + number;
    lblShow.Text = ViewState["number"].ToString();
}

我想这会奏效。

【讨论】:

  • 这与 OPs 代码有什么不同,除了他的代码将视图状态访问包装在一个属性中(这比我认为你所做的更好)?
  • 就此而言,类级别字段是写+1; 的一种奇怪方式。
猜你喜欢
  • 2014-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-11
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
相关资源
最近更新 更多