【问题标题】:Accessing Hidden field or variable from the aspx page to its child user control从 aspx 页面访问隐藏字段或变量到其子用户控件
【发布时间】:2015-10-19 12:46:20
【问题描述】:

我有一个主 aspx 页面和两个用户控件。在用户控件 1 中,我有一个隐藏字段(即 Hiddenfield1),我希望在用户 Control2 中使用该隐藏字段值。到目前为止,这就是我所做的,

1) 在用户控件 2 中注册用户控件 1,并在用户控件 2 中创建另一个隐藏字段,通过使用 set 和 get,我尝试将用户控件 1 值分配给用户控件 2 中的隐藏字段,但没有成功

代码 sn-ps:

在用户控件 2 中:

 Me.VarUC2 = Me.Usercontrol1ID.VarUC1

但是在这一个中,它返回 null 并且 VarUC1 被分配给母版页中的另一个本地整数变量。是否可以从母版页中的变量获取 VarUC2 值。请告诉我如何解决这个问题。

【问题讨论】:

  • CType(Me.Parent.FindControl("IdOfUC1"), TypeOfUC1).VarUC1 - 注意:您可能需要上几个级别才能找到您的控件,这会使您的代码对标记,除非你做某种递归函数。
  • 它不工作.. 你能告诉我如何从 aspx 页面获取整数变量值到它的用户控件吗?我将 VarUC1 分配给母版页中的变量(即@varMaster),我可以在 usercontrol 2 中获取 VarMaster 吗? @NoAlias
  • 添加一个 HiddenField 并为其赋值。然后您执行相同的 CType 交易,但针对 HiddenField。逐步检查并使用断点和 Watch 窗口,这样您就可以确定必须执行多少 .Parent.Parent.Parent.etc 才能到达母版页。

标签: asp.net vb.net hidden-field local-variables


【解决方案1】:

要获取母版页上隐藏字段的值,您必须首先从用户控件中获取母版页的实例。通常,母版页是页面属性上的第一个控件,可从 ASP.Net 中的任何控件访问。一旦您拥有母版页的实例,您就可以使用 FindControl 方法并将结果转换为隐藏字段。尽管这可以在一行中完成,但我已将示例拆分为多行以使其更易于理解。只需将“IdOfYourHiddenField”替换为实际 ID。

    Dim objTargetPage As Page = CType(sender, Control).Page

    Dim objMasterPage As Control = CType(objTargetPage.Controls(0), Control)

    Dim hdnTarget As HiddenField = CType(objMasterPage.FindControl("IdOfYourHiddenField"), HiddenField)

    Dim intValue As Integer = CInt(hdnTarget.Value)

【讨论】:

  • 我试过这样:: ** UIHiddenFieldUC2 = CType(Me.Page.Master.FindControl("[UIHiddenFieldMasterPage]"), HiddenField) ** ** Me.IntUC2 = CInt(UIHiddenFieldUC2.Value ) ** .................但它抛出“System.NullReferenceException:对象引用未设置为对象的实例。”错误。执行到这一点时,似乎母版页隐藏字段值正在擦除。你能建议我其他的方法吗?
  • 您可能会得到它,因为 UIHiddenFieldUC2 为空。如果隐藏字段的值为 null,它将作为空字符串返回,并且您将使用 CInt() 获得无效的强制转换异常。您需要做的是在 FindControl() 行上放置一个断点,并使用您的监视窗口准确地找到该隐藏字段在控件堆栈中的位置,以便您获得对它的引用。
  • 我将这个添加到观看窗口:: CType(Me.Page.Master.FindControl("[UIHiddenFieldExamInteger]"), HiddenField).. 它在值列中显示这个“引用的对象有一个'Nothing' 的值。"
  • 是的,所以现在继续尝试那里的值。示例:Me.Page.Controls(0)、Me.Page.Controls(1).FindControl("Id") 等。查找您的 HiddenField 所在的位置。
猜你喜欢
  • 2020-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 1970-01-01
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多