2017-08-30 3 views
0

aspx Masterpagesコンテンツページに非表示フィールドコントロールとリンクボタンを設定しました。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' はありません現在のコンテキストには存在しません。

これはmaterpagesのためですか?これをどうすれば解決できますか?私はその上のHiddenFieldコントロールを持つページに対して生成されたソースのhtmlを見たし、これが出力された

EDITED

... ...用として今

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

まず、マスターページを使用しているページのプレースホルダーを見つけてから、PlaceHolder内の正しいコントロールを見つけなければなりません。

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

は、[OK]を、ので、どのように私はその後、通常使用して取得するのと同じことhiddenfield1 ... OID文字列の値を取得することができます。あなたはすべての投稿の値が何であるかを確認したい場合は

、これを使用します= Request.Form [HiddenField1]; ? – cjtampa

+0

私はあなたが提示したコードの最初の行でこのエラーが発生しています。オブジェクト参照がオブジェクトのインスタンスに設定されていません。 – cjtampa

+0

まず、 'ContentPlaceHolder1'がマスターを使ってページの' asp:Content'に与えたIDと一致することを確認してください。 'HiddenField1'が別のコントロールの中にある場合は、まず' .FindControl( "HiddenField1")の前に別の 'FindControl'を追加してコントロールツリーをナビゲートしてそのコントロールツリーを見つける必要があります。 – VDWWD

関連する問題