Zugriff auf den Wert eines versteckten Feldes auf Masterpage aus codebehind
In einem follow-up zu meinem vorherigen Frage, möchte ich, um den Wert des versteckten input-Feld aus der untergeordneten Seite codebehind.
Versuchte ich HtmlInputHidden hdnID = (HtmlInputHidden)Page.Master.FindControl("ctl00_hdnField");
aber ich bekomme den Wert "null".
Einen Ausschnitt aus der Masterpage ist:
<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>
Auf mein Kind aspx-Seite, ich habe diese javascript-block:
window.onload = function() {
var newDate = new Date();
var hidField = document.getElementById("ctl00_hdnField");
if (hidField != null)
hidField.value = newDate.toLocaleString();
}
Wenn ich "Add Watch" zu
Dokument.getElementById("ctl00_hdnField")
der Wert richtig ist.
Frage: Wie würde ich den Wert zuzugreifen, der im inneren hdnField Kontrolle von codebehind?
Sind Sie auf der Suche nach dem Steuerelement aus der masterpage-codebehind-oder der untergeordneten Seite codebehind?
das Kind codebehind-Seite
Nur eine readonly-Eigenschaft mit dem Namen
Ich würde beachten Sie, dass Sie wahrscheinlich benötigen, um gehen Sie in Ihrem designer-Datei und machen
das Kind codebehind-Seite
Nur eine readonly-Eigenschaft mit dem Namen
Master()
in Ihrem Kind-Seite, gibt die masterpage Instanz, und verweisen Sie in Ihrem Kind Seite wie Master.hdnField
Ich würde beachten Sie, dass Sie wahrscheinlich benötigen, um gehen Sie in Ihrem designer-Datei und machen
hdnField
öffentlichkeit. Aber, das ist die sauberste und einfachste Lösung.InformationsquelleAutor Csharp | 2013-03-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
So ändern Sie es VON
HtmlInputHidden hdnID = (HtmlInputHidden)Page.Master.FindControl("ctl00_hdnField");
ZU
HiddenField hdnID = (HiddenField)Page.Master.FindControl("hdnField");
Es ist nur ein casting-Sache - Ankündigung
HtmlInputHidden
geändertHiddenField
. Sie brauchen auch nicht diect100_
Teil - dies ist nur damit der HTML-gerenderte element hat eine eindeutige ID.Die Kontrolle über Ihre Seite ein asp.net Kontrolle, nicht eine generische HTML-Steuerelement.
Verwenden Sie
HtmlInputHidden
wenn Sie eine generische<input type="hidden" />
in den HTML-Code.Einfacher Fehler 🙂
By the way, wenn Sie planen, über die Verwendung von Javascript zur Interaktion mit dem Formular-Elemente und Ihre Verwendung .net 3.5 oder höher dann auch die
ClientIDMode=Static
Eigentum - dies zu verhindern .net hinzufügen, alle Arten von Unsinn, um Ihre ID.ClientIDMode = Static ist .net 4-Funktion, richtig? Dieses Projekt ist in VS2008 (ClientIDMode nicht in VS2008 HTML intellisense)
Sorry, ja, .net 4 und aufwärts... 🙂
InformationsquelleAutor Darren Wainwright
Sollten Sie eine Eigenschaft erstellen, in der Masterpage, die wickeln das HiddenField.
Und in der Seiten-code, der sich hinter Sie auf Sie zugreifen können wie diese:
Wenn etwas nicht klar ist Fragen Sie mich bitte.
InformationsquelleAutor Marseld
Ich glaube nicht, dass Sie brauchen, um das Präfix der hidden Feld ID mit
ctl00_
, benutzen Sie einfach die normale ID:Ich habe gerade 'HtmlInputHidden", weil es das ist, was Sie hatte oben Ihr eigenes Beispiel. Natürlich sollte man sein casting zu HiddenField als Darren schlägt.
InformationsquelleAutor Netricity
Etwas wie:
InformationsquelleAutor Jason Buell