【问题标题】:Updating textbox value, more then once in webform asp.net更新文本框值,不止一次在 webform asp.net
【发布时间】:2013-05-20 13:52:14
【问题描述】:

我正在尝试使用字符串更新文本框。该字符串将被连接,然后将使用单击事件更新文本框。我可以在 windows 应用程序中执行此操作,但是当我尝试在 asp.net 应用程序中执行此操作时,我无法获得我想要的结果。

public partial class WebForm3 : System.Web.UI.Page
{
    public string string_punch;
    protected void Page_Load(object sender, EventArgs e)
    {
        MultiView1.SetActiveView(View1);            
        txt_punch.MaxLength = 4;
        txt_punch.Attributes.Add("OnChange", string_punch);            
    }

    protected void btn_punch_7_Click(object sender, EventArgs e)
    {
        const string string_punch_Number_7 = "7";
        string_punch = string_punch + string_punch_Number_7;
        txt_punch.Attributes.Add("Value", string_punch);
    }

    protected void btn_punch_8_Click(object sender, EventArgs e)
    {
        const string string_punch_Number_8 = "8";
        string_punch = string_punch + string_punch_Number_8;
        txt_punch.Attributes.Add("Value", string_punch);
    }

我希望能够单击 btn_punch_7,然后单击 btn_punch_8,然后连接字符串,并使用两个数字更新文本框。每次单击按钮时,字符串都会设置为 null。感谢您提前提供帮助。

【问题讨论】:

    标签: c# asp.net textbox concatenation string-concatenation


    【解决方案1】:

    string_punch 在每个 PostBack 之间丢失,这就是为什么它总是等于 null,因为 ASP.NET 是无状态的,这意味着它不会在回发之间保持状态。还使用TextBoxText 属性来分配/检索文本框的值。

    将您的事件相应地更改为以下代码:

    protected void btn_punch_7_Click(object sender, EventArgs e)
    {
       const string string_punch_Number_7 = "7";
       var text = txt_punch.Text;
       text += string_punch_Number_7
    
       txt_punch.Text = text;
    }
    

    【讨论】:

    • 成功了!谢谢,我正要拔头发。我认为这是造成它的原因,但我不知道如何解决它。我有一种感觉,这不是 asp.net 让我感到困惑的最后一次。
    【解决方案2】:

    string_punch 存储在Session 中,因此将此代码添加到加载中:

    if (Session["string_punch"] == null)
    {
        // this will only happen ONE TIME per session
        Session["string_punch"] = "your INITIAL static value";
    }
    string_punch = Session["string_punch"];
    

    现在string_punch 的值将在回发之间保留。您的代码中发生的情况是,当页面在回发期间重建时,public string string_punch; 正在重新定义此变量。

    现在每次点击后只需添加这一行:

    Session["string_punch"] = string_punch;
    

    【讨论】:

    • 我也很好奇这个。我也要试试这个。谢谢!
    【解决方案3】:

    您每次都在向元素添加属性值。而不是那样做。

    txt_punch.Text = string_punch;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多