我正在尝试使用以下代码在后面的代码中获取隐藏输入的值。我正在尝试投射它,但它找不到它,有什么帮助吗?
((HtmlControl)FindControl("contentId"))
我使用以下代码在 aspx 中声明它:
<input id="contentId" type="hidden" />
我不想运行服务器,因为我有自己的理由
要在服务器端访问 HTML 控件(在您的 C# 代码中),您需要首先添加 runat="server" 属性。所以,你的标记应该看起来像
<input type="hidden" id="contentId" runat="server"/>
现在,在后面的代码中,如果后面的代码正确生成,您可以通过其 idcontentId
本身使用控件。
请让我们知道为什么您首先被迫使用 FindControl,因为它可以通过直接使用 id 来访问。
更新
根据下面的评论,出于某种原因,用户对将此输入作为服务器端控件不感兴趣。那么您可以在服务器端读取值的唯一可能性如下。但不建议这样做,因为对名称的任何更改都会被忽视并在运行时中断。
<input type="hidden" id="contentId" name="contentName" runat="server"/>
在代码中
this.Request.Forms["contentName"]
将返回隐藏值。
尝试以这种方式在页面上搜索它
HiddenField hf = (HiddenField)page.FindControl("contentId");
要获取值:
HiddenField h = (HiddenField)Gridview.FindControl("HiddenFieldName");
然后,如果您愿意,可以将其放入字符串中。
使用此代码:
string s=((HiddenField)Panel1.FindControl("contentId")).Value;
这里的面板是容器控件。这可能是网格或其他任何东西,甚至是母版页。但如果您使用 FindControl,我认为控件可能位于某个容器内。
HtmlInputHidden hf = Page.FindControl("contentId") as HtmlInputHidden;
string hfValue = hf.Value;