如何使用Request.Form在使用masterpages时检索值

时间:2017-08-30 21:18:55

标签: asp.net master-pages

我在aspx Masterpages内容页面上设置了一个隐藏字段控件和一个链接按钮。

<asp:HiddenField ID="HiddenField1" runat="server" value='<%# Eval("ID") %>'/>
<asp:LinkButton ID="LinkButton1" runat="server" postbackurl="orderhistorydetail.aspx">View</asp:LinkButton>

尝试使用此代码检索回发页面上的值时...

string oid = Request.Form[HiddenField1];

我收到了错误...

  

名称&#39; HiddenField1&#39;在当前背景下不存在。

这是因为重复吗?我该如何解决这个问题?

... EDITED

我查看了为其上有隐藏字段控件的页面生成的源html,这是输出...

<input type="hidden" name="ctl00$MainContentPlaceHolder1$ListView1$ctrl0$ctl00$HiddenField1" id="MainContentPlaceHolder1_ListView1_ctrl0_HiddenField1_0" value="12386026" />

现在,至于您最初给我的代码,我将其更新为此...

HiddenField hf = Page.PreviousPage.Master.FindControl("MainContentPlaceHolder1").FindControl("ListView1").FindControl("HiddenField1") as HiddenField;

仍然没有运气。我接近了吗?

1 个答案:

答案 0 :(得分:0)

您要发布的页面不了解上一页中显示的控件。您需要使用FindControl。

HiddenField hf = Page.PreviousPage.Master.FindControl("ContentPlaceHolder1").FindControl("HiddenField1") as HiddenField;
string oid = hf.Value;

或者如果你真的想使用Request.Form,你需要使用UniqueID。

string oid = Request.Form[HiddenField1.UniqueID];

首先,您必须找到使用母版页的页面的PlaceHolder,然后找到PlaceHolder中的正确控件。

如果要查看所有已发布值的内容,请使用:

foreach (string s in Request.Form.Keys)
{
    Response.Write(s.ToString() + ": " + Request.Form[s] + "<br>");
}
相关问题