如何在ascx页面中声明隐藏字段,以便从aspx中的隐藏字段获取值?

时间:2013-10-11 16:37:04

标签: c# asp.net

目标:在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上面的代码没有相同的值。我错过了什么或做错了什么?

提前感谢您提出任何意见,建议或建议

4 个答案:

答案 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(跳过将自定义属性和方法添加到用户控件部分以获取相关问题)

send custom parameters to user control ascx有一个好的例子

答案 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)