2017-08-30 75 views
0

我在aspx Masterpages内容页面上设置了隐藏字段控件和链接按钮。如何在使用母版页时使用Request.Form检索值

<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]; 

我收到错误...

名称 'HiddenField1' 不不存在于当前的情况下。

这是因为有物质?我怎样才能解决这个问题?

EDITED ...

我认为这是对在其上有HiddenField控件的页面生成的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; 

仍然没有运气。我靠近吗?

回答

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]; 

首先,你必须找到页的正在使用一个母版页中的占位符中的占位符,然后正确的控制。

如果你要检查什么都张贴值,使用:

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

好了,我怎么会那么检索只是hiddenfield1通常会使用检索...串OID的值= Request.Form [HiddenField1]; ? – cjtampa

+0

虽然在第一行代码中出现了此错误,但未将对象引用设置为对象的实例。 – cjtampa

+0

首先,确保'ContentPlaceHolder1'与您使用主页面向页面中的'asp:Content'输入的ID相匹配。如果'HiddenField1'在另一个控件中,则需要先通过在'.FindControl(“HiddenField1”)' – VDWWD