我在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;
仍然没有运气。我接近了吗?
答案 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>");
}