1

我正在尝试使用字符串更新文本框。该字符串将被连接,然后将使用单击事件更新文本框。我可以在 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。感谢您提前提供帮助。

4

3 回答 3

2

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

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

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;
}
于 2013-05-20T13:54:38.267 回答
0

存储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;
于 2013-05-20T13:55:31.937 回答
0

您每次都将属性值添加到元素中。而不是那样做。

txt_punch.Text = string_punch;
于 2013-05-20T13:56:55.443 回答