3

前の質問のフォローアップで、子ページの分離コードから非表示の入力フィールドの値を取得したいと考えています。

試してみHtmlInputHidden hdnID = (HtmlInputHidden)Page.Master.FindControl("ctl00_hdnField");ましたが、「null」値が得られました。

ここに画像の説明を入力

マスターページのスニペットは次のとおりです。

<head runat="server">
    <title>
        <asp:ContentPlaceHolder ID="TitleContent" runat="server"></asp:ContentPlaceHolder>
        <asp:Literal ID="Literal2" runat="server" Text=" : Logistics Management" />
    </title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <link href="~/css/styles.css" rel="stylesheet" type="text/css" />

    <asp:ContentPlaceHolder ID="ScriptCssContent" runat="server">
    </asp:ContentPlaceHolder>

</head>
<body>

<form id="form1" runat="server">
    ......
    ......
    ......
        <div id="container">
        ....
        ....
        ....
                <div id="content" style="z-index:0;">
                <asp:HiddenField ID="hdnField" runat="server" Value=""/>
                ....
                ....
                ....
                        <asp:ContentPlaceHolder ID="MainContent" runat="server">

                        </asp:ContentPlaceHolder>
            </div>
        </div>
</form>

私の子 aspx ページには、次の JavaScript ブロックがあります。

window.onload = function() {
    var newDate = new Date();
    var hidField = document.getElementById("ctl00_hdnField");

    if (hidField != null)
        hidField.value = newDate.toLocaleString();
}

「ウォッチを追加」すると

document.getElementById("ctl00_hdnField")

値は正しいです。

質問:コードビハインドから hdnField コントロール内の値にアクセスするにはどうすればよいですか?

4

4 に答える 4

5

だからそれを変える

HtmlInputHidden hdnID = (HtmlInputHidden)Page.Master.FindControl("ctl00_hdnField");

HiddenField hdnID = (HiddenField)Page.Master.FindControl("hdnField");

これはただのキャスティングです - 通知HtmlInputHiddenが に変更されましたHiddenField。この部分も必要ありませんct100_。これは、HTML でレンダリングされた要素が一意の ID を持つようにするためです。

ページ上のコントロールは、汎用 HTML コントロールではなく、asp.net コントロールです。

HTMLHtmlInputHiddenにジェネリックを配置する場合に使用します。<input type="hidden" />

于 2013-03-28T19:23:36.543 に答える
3

HiddenField をラップする Masterpage でプロパティを作成する必要があります。

public String HdnFieldValue
{
get
{
    return hidField.Value;
}
set
{
    hidField.Value = value;
}
}

また、ページ コード ビハインドでは、次のようにアクセスできます。

((YourCustomMaster)Page.Master).HdnFieldValue

不明な点があれば、私に尋ねてください。

于 2013-03-28T18:57:21.450 に答える
1

非表示フィールドの ID の前に を付ける必要はないと思いますctl00_。通常の ID を使用してください。

(HtmlInputHidden)Page.Master.FindControl("hdnField");
于 2013-03-28T19:01:31.520 に答える
0

次のようなものを使用します。

if (Page.Master.FindControl("hdnField") != null)
{
    String myValue = (HtmlInputHidden)Page.Master.FindControl("hdnField").value;
}
于 2013-03-28T19:10:00.463 に答える