次のコードを使用して、コード ビハインドで非表示の入力の値を取得しようとしています。私はそれをキャストしようとしていますが、それを見つけることができません。
((HtmlControl)FindControl("contentId"))
次のコードを使用して aspx で宣言します。
<input id="contentId" type="hidden" />
独自の理由があるため、サーバーで実行したくない
サーバー側 (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"]
非表示の値を返します。
値を取得するには:
HiddenField h = (HiddenField)Gridview.FindControl("HiddenFieldName");
必要に応じて、それを文字列に入れることができます。
このようにページ内で検索してみてください
HiddenField hf = (HiddenField)page.FindControl("contentId");
このコードを使用します:
string s=((HiddenField)Panel1.FindControl("contentId")).Value;
ここのパネルはコンテナコントロールです。これは、グリッドまたはその他のもの、あるいはマスターページである可能性があります。ただし、FindControlを使用している場合は、コントロールがコンテナ内にある可能性があります。