【问题标题】:Getting hidden field value from content-page after cross-page post跨页发布后从内容页面获取隐藏字段值
【发布时间】:2012-05-16 08:54:35
【问题描述】:

我有以下情况:

Page1.aspx 基于母版页,其中有一个名为“hdFlotaID”的隐藏字段。在同一页面上,我有一个按钮,我为其设置了PostBackUrl="Page2.aspx"。当我单击按钮时,Page2 已加载,但我无法获取隐藏字段。我都试过了(正如我在 msdn 或其他帖子上看到的那样):

this.PreviousPage.Controls[0].FindControl("hdFlotaID")

this.PreviousPage.FindControl("hdFlotaID")

但它们返回 null。

This.PreviousPage 返回一个值,但该值的Controls[0] 似乎返回母版页,我想要内容页。

我还检查了隐藏字段具有 runat 服务器值并且 ClientID 模式设置为静态(我什至检查了生成的 HTML 并且 ID 是正确的)

你能帮帮我吗!谢谢

解决方案:好的,根据您的帮助,我让它像这样工作

this.PreviousPage.Controls[0].FindControl("CPH").FindControl("hdFlotaID")

其中 CPH 是母版页中 ContentPlaceHolder 的 ID。

尽管在我的情况下添加 PreviousPageType 指令给我一些关于命名空间的错误,但具有公共属性的想法也非常好。如果我删除了指令并将其转换为代码隐藏,它就可以正常工作。

非常感谢大家

【问题讨论】:

    标签: asp.net hidden-field


    【解决方案1】:

    FindControl 仅搜索一个级别,即顶级容器,并且内容页面的所有控件并不直接在主控件集合中,而是在主控件集合中。

    为了达到这个目的

    1) 你需要编写一个递归版本的 FindControl。试试这样(没有测试过):

    ((Page1)this.PreviousPage).FindControl("hdFlotaID")
    

    2) 将前一页类型转换为当前页的类型。然后你就可以访问控件了。

    【解决方案2】:

    在 page1.aspx 中设置一个属性,使用 this.Page.MasterPage.FindControl("hdFlotaID") 返回隐藏字段的值。在 Page2.aspx 中,在 ASPX 文件中添加"PreviousPageType" 标签。通过这种方式,您可以以类型安全的方式访问 previos 页面属性,例如this.PreviousPage.hdFlotaID_property

    【讨论】:

    • 您无法在母版页中直接找到对内容页的控制
    • 我假设 hdFlotaID 是 Page1.aspx 母版页的一部分。如果不是,请在 page1.aspx 中适当更改属性定义。
    猜你喜欢
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多