跨用户控件属性设置和保留值
Cross UserControl property setting and persisting values
我在维护的 ASP.NET 应用程序上使用一组用户控件。
我有一个呈现一组自定义用户控件的页面。在其中一个控件上,假设ucA
,我可能有一个小的Javascript弹出窗口,它可以呈现另一个UserControl,我们称之为ucB
。在ucA
上,我定义了一个公共属性,该属性从 ucA
中定义的 hiddenField 中设置或获取值:
<asp:HiddenField ID="hidWorkDirName" runat="server" />
和属性定义:
public string _hidWorkDirName
{
get { return hidWorkDirName.Value; }
set { hidWorkDirName.Value = value; }
}
我的ucB
只显示一个文本框,提交后,应设置hidWorkDirName
的值:
protected void btnSubmit_Click(object sender, EventArgs e)
{
ucA parent = (ucA)this.Parent; //this, being ucB
parent._hidWorkDirName = txtName.Text; //the TextBox value being set on ucA
}
调试时,我可以看到该值设置正确。
现在,ucA
还有一个提交按钮(两个提交都是针对不同的事情(,我想在上面读取hidWorkDirName
的值。但是无论我尝试什么,我得到的值总是一个空字符串,就好像什么都没有设置一样。
我尝试直接从隐藏字段和属性本身(_hidWorkDirName
(读取值,但我从未得到我之前设置的值。
为什么会这样?
这是因为Hiddenfield
hidWorkDirName
可能会在Page_Load
期间重置。尝试使用 ViewState
的其他方法。
这是您的财产ViewState
public string _hidWorkDirName
{
get
{
if (ViewState["WorkDirName"] != null)
{
return (string)ViewState["WorkDirName"];
}
return string.Empty;
}
set
{
ViewState["WorkDirName"] = value;
}
}
相关文章:
- 如何设置html元素填充的动画
- 分派点击事件并保留击键修饰符
- 需要帮助设置json数组
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 数组在递归方法中设置为null
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 而循环只设置php中输入字段中的第一个值
- 当设置addFromAutocompleteOnly时,剩余文本将保留在输入字段中
- 如何设置类型化对象的属性,同时保留它's类型
- 如何在保留当前上下文的同时设置Timeout
- 在 replot() 图表上保留 jqplot 设置
- 跨用户控件属性设置和保留值
- 设置Ace编辑器的值时保留缩进
- 当代码包含保留字时,设置代码的CSS
- 覆盖保留字(设置 false = true)
- Google Maps API v3 -设置目的地,但保留原点空白
- 当设置为JavaScript对象的属性名时,保留字是否需要加引号
- 在一个页面上设置的Cookie不会在使用Javascript的其他页面上保留
- 如何在不使用jQuery或javascript更改浏览器设置的情况下保留cookie