我在用户控件uc1中有一个文本框。我在一个名为default.aspx的页面中嵌入了这个uc1。我的问题是在运行应用程序并在文本框中输入一些数据后,刷新页面时我想显示我在文本框中输入的值而不清除文本框。我想帮助解决如何实现此问题的代码。在此先感谢您的帮助。
答案 0 :(得分:0)
在aspx.cs页面的顶部创建一个全局变量:
public string textboxValue
{
get
{
if (ViewState["textboxValue"] != null)
return ViewState["textboxValue"].toString();
else
return "";
}
set
{
ViewState["textboxValue"] = value;
}
}
然后,在PageLoad()中,为textboxValue指定一个值:
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
textboxValue = MyTextBox.Value;
else
MyTextBox.Value = textboxValue;
}
您也可以随时使用textboxValue分配MyTextBox的值,或者以对您有用的任何其他方式使用它。
答案 1 :(得分:0)
所有asp.net服务器端控件(runat="server"
)的默认行为是保持其状态。如果在页面刷新时清除了文本框,则可能会在代码中自行清除该值。
您是否动态添加文本框或用户控件?如果是这样,你在PageInit
期间这样做了吗?稍后添加它们可能会导致它们失去状态。
答案 2 :(得分:0)
我能够在不清除文本框中的值的情况下刷新页面。我做了如下: 我在UC1.vb中创建了一个公共属性,如下所示: 公共属性textbox_value()As String
Get
If Session("textbox1") IsNot Nothing Then
Return Session("textbox1").ToString()
Else
Return ""
End If
End Get
Set(value As String)
Session("textbox1") = value
End Set
End Property
在用户控件的page_load事件中,我添加了以下代码: 如果IsPostBack然后 textbox_value = textbox1.Text ElseIf Not IsPostBack然后'第一次加载页面或刷新页面 textbox1.Text = textbox_value 结束如果
希望它有所帮助。