在我之前的question的后续内容中,我希望从子页面代码隐藏中获取隐藏输入字段的值。
我试过了HtmlInputHidden hdnID = (HtmlInputHidden)Page.Master.FindControl("ctl00_hdnField");
,但我得到了一个“空”值。
主页的摘录是:
<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>
在我的Child 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控件中的值?
答案 0 :(得分:5)
所以改变它
HtmlInputHidden hdnID = (HtmlInputHidden)Page.Master.FindControl("ctl00_hdnField");
要
HiddenField hdnID = (HiddenField)Page.Master.FindControl("hdnField");
这只是一个铸造的东西 - 注意HtmlInputHidden
更改为HiddenField
。您也不需要ct100_
部分 - 这只是HTML呈现元素具有唯一ID。
页面上的控件是一个asp.net控件,而不是一般的HTML控件。
如果您在HTML中添加通用HtmlInputHidden
,则可以使用<input type="hidden" />
。
答案 1 :(得分:2)
您应该在Masterpage中创建一个包装HiddenField的属性。
public String HdnFieldValue
{
get
{
return hidField.Value;
}
set
{
hidField.Value = value;
}
}
在页面代码后面你可以像这样访问它:
((YourCustomMaster)Page.Master).HdnFieldValue
如果问题不明确,请问我。
答案 2 :(得分:1)
我认为您不需要使用ctl00_
为隐藏字段的ID添加前缀,只需使用普通ID:
(HtmlInputHidden)Page.Master.FindControl("hdnField");
答案 3 :(得分:0)
使用类似:
if (Page.Master.FindControl("hdnField") != null)
{
String myValue = (HtmlInputHidden)Page.Master.FindControl("hdnField").value;
}