目标:在ascx页面中从我的aspx页面读取隐藏字段值
问题:我是ASP的新手,我不知道如何做到这一点。我可以在aspx页面中设置隐藏字段的值,但是如何在ascx页面中读取该值?我使用的代码如下
Page1.aspx的
<%@ Register Src="~/UserControl/Page2.ascx" TagName="Info" TagPrefix="uc" %>
<asp:HiddenField ID="hdnfldInfo" runat="server" />
Page1.aspx.cs
String strInfo = Convert.ToString(e.CommandArgument);
hdnfldInfo.Value = strInfo;
Page2.ascx
HiddenField Info = (HiddenField)this.Info.FindControl("hdnfldIncDesc");
Page2.ascx上面的代码没有相同的值。我错过了什么或做错了什么?
提前感谢您提出任何意见,建议或建议
答案 0 :(得分:3)
您需要在ascx(也称为用户控件)上创建属性,并让aspx页面根据隐藏字段设置属性
让你的ascx代码落后于此:
public class MyUserControl : UserControl{
public String MyProperty {get;set;}
//...do stuff with myProperty
}
然后在后面的aspx页面代码中
public class MyPage : Page{
protected void Page_Load(){
HiddenField info = (HiddenField)myHiddenField;
MyUserControl control = myusercontrol;
control.MyProperty = info.Value;
}
}
您可能需要更改属性设置的页面生命周期的哪一部分。
我还会查看一些关于创建用户控件的文章,因为你是asp.net的新手。它会在以后付清。
看看: 关于创建用户控件的关于gernal的好文章:http://msdn.microsoft.com/en-us/library/3457w616(v=vs.100).aspx(跳过将自定义属性和方法添加到用户控件部分以获取相关问题)
答案 1 :(得分:2)
除了通过进入后面的设计器代码使隐藏字段公开而不受保护(默认情况下)之外,您还需要从用户控件访问父页面。最佳做法是在用户控件中创建一个属性,父级设置该属性,然后用户控件将使用相关属性在页面上显示它。
// usercontrol:
public string MyProperty {get; set;}
// ASPX page:
this.ucMyUserControl.MyProperty = this.hdnfldInfo.Value;
然后在您的用户控件中,在您认为合适的地方使用“MyProperty”。
答案 2 :(得分:2)
ascx控件引用了我们可以使用的页面。
this.Page
现在我们需要从该页面获取控件。由于我们知道它的名字,你可以使用FindControl
HiddenField Info = this.Page.FindControl("hdnfldIncDesc");
请注意,如果找不到具有该名称的控件,则返回null。所以代码相应。
答案 3 :(得分:0)
使用 this.Parent.FindControl(HiddenBankAccountId)