2

次のコードを使用して、コード ビハインドで非表示の入力の値を取得しようとしています。私はそれをキャストしようとしていますが、それを見つけることができません。

((HtmlControl)FindControl("contentId"))

次のコードを使用して aspx で宣言します。

    <input id="contentId"  type="hidden" />

独自の理由があるため、サーバーで実行したくない

4

5 に答える 5

5

サーバー側 (C# コード内) で HTML コントロールにアクセスするには、最初に runat="server" 属性を追加する必要があります。したがって、マークアップは次のようになります

<input type="hidden" id="contentId" runat="server"/>

contentIdコード ビハインドでは、コード ビハインドが適切に生成された場合、ID 自体でコントロールを使用できます。

ID を使用して直接アクセスできるため、最初に FindControl を使用せざるを得ない理由を教えてください。

アップデート

以下のコメントによると、ユーザーは何らかの理由で、この入力をサーバー側のコントロールにすることに関心がありません。次に、サーバー側で値を読み取ることができる唯一の可能性は次のとおりです。ただし、名前の変更は気付かれず、実行時に壊れてしまうため、これはお勧めできません。

<input type="hidden" id="contentId" name="contentName" runat="server"/>

コード内

this.Request.Forms["contentName"]非表示の値を返します。

于 2012-10-17T08:48:53.037 に答える
2

値を取得するには:

HiddenField h = (HiddenField)Gridview.FindControl("HiddenFieldName");

必要に応じて、それを文字列に入れることができます。

于 2012-10-17T10:11:03.423 に答える
2

このようにページ内で検索してみてください

HiddenField hf = (HiddenField)page.FindControl("contentId");
于 2012-10-17T08:44:26.850 に答える
1

このコードを使用します:

string s=((HiddenField)Panel1.FindControl("contentId")).Value;

ここのパネルはコンテナコントロールです。これは、グリッドまたはその他のもの、あるいはマスターページである可能性があります。ただし、FindControlを使用している場合は、コントロールがコンテナ内にある可能性があります。

于 2012-10-17T08:42:09.117 に答える