如何从aspx页面中保留ascx控件中的值,请单击按钮
本文关键字:控件 按钮 请单击 ascx 保留 aspx | 更新日期: 2023-09-27 18:27:38
IDE:VS 2012 web
我有一个test.aspx页面,使用以下代码在该页面上动态添加用户控件
internal static List<ucTest> collTest = null;
private void PageLoad()
{
//called in page on load, handled properly across postback.
collTest = new List<ucTest>();
}
private void AddTestControl()
{
ucTest obj= LoadControl("~/UserControl/ucTest.ascx") as ucTest;
collTest.Add(obj); //control instance is added in list, to retrieve back values.
}
现在,在test.aspx代码隐藏文件中的按钮Save Click上,我正试图取回ucTest文本框的值。,我已经空了。你能告诉我如何保持这种价值吗。
protected void btnSave_Click(object sender, EventArgs e)
{
ucTest test = (ucTest )this.FindControl("ucTest.ascx"); //not working, test is null.
foreach (ucTest objTest in collTest)
{
string s = objTest.txtSomthing.value; //here s is showing empty.., even the value is populated in form.; , txtSomthing is public in designer.
}
}
有什么方法可以从ucTest中检索这些值吗。,aspx页面可以包含多个ucTest控件。
假设您的userControl中有一个名为txtName的文本框,那么我将通过在userControl的代码后面添加一个属性来公开它的值。即
public string FirstName
{
get
{
return txtName.Text;
}
set
{
txtName.Text = value;
}
}
然后在您的aspx中执行以下操作:
protected void btnSave_Click(object sender, EventArgs e)
{
ucTest test = (ucTest )collTest[yourdropdown.SelectedIndex];
string strName = ucTest.FirstName;
}
使用以下方法解决问题:
string value = Request.From["someDynamicID"];
当您将控件添加到父页This is Key时,您必须从page_Init()方法进行加载。通过这种方式,它将被添加到网站的视图状态中。例如,如果您将其添加到Page_Load()中,您将无法在Save()方法中获得用户控件的值。
这个链接有一个ZIP文件中的源代码示例。