2

我正在尝试使用以下代码在后面的代码中获取隐藏输入的值。我正在尝试投射它,但它找不到它,有什么帮助吗?

((HtmlControl)FindControl("contentId"))

我使用以下代码在 aspx 中声明它:

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

我不想运行服务器,因为我有自己的理由

4

5 回答 5

5

要在服务器端访问 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"]将返回隐藏值。

于 2012-10-17T08:48:53.037 回答
2

尝试以这种方式在页面上搜索它

HiddenField hf = (HiddenField)page.FindControl("contentId");
于 2012-10-17T08:44:26.850 回答
2

要获取值:

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

然后,如果您愿意,可以将其放入字符串中。

于 2012-10-17T10:11:03.423 回答
1

使用此代码:

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

这里的面板是容器控件。这可能是网格或其他任何东西,甚至是母版页。但如果您使用 FindControl,我认为控件可能位于某个容器内。

于 2012-10-17T08:42:09.117 回答
1
HtmlInputHidden hf = Page.FindControl("contentId") as HtmlInputHidden;
string hfValue = hf.Value;
于 2017-04-11T17:40:40.757 回答