我在javascript代码中设置了隐藏字段:
<script type="text/javascript">
function start() {
document.getElementById('Hidden1').value = "somme value";
}
</script>
<body>
<form id="form1" runat="server">
<div>
<input type="text" id="Hidden1" name="Hidden1" runat="server"/>
<div>
</form>
在我的代码后面,我想在page_load函数中获取输入值:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.ClientScript.IsClientScriptBlockRegistered("start") && !IsPostBack)
{
Page.ClientScript.RegisterStartupScript(typeof(Page), "start", "start();", true);
}
string message =Hidden1.Value;
}
消息为空,怎么能在我的page_load中获取隐藏值?
感谢。
答案 0 :(得分:1)
您没有将页面提交回服务器,除非您正在进行POST,否则您将无法“获取”页面变量。
改变这个:
<form id="form1" runat="server">
<div>
<input type="text" id="Hidden1" name="Hidden1" runat="server"/>
<div>
</form>
对此:(编辑:也改变了type="hidden"
)
<form id="form1" runat="server">
<div>
<input type="hidden" id="Hidden1" name="Hidden1" runat="server"/>
<div>
<input type="submit" value="submit" />
</form>
然后点击提交按钮
答案 1 :(得分:0)
总结一下其他人所写的内容(通过它的外观),如果您按下提交按钮以便获得回发,这将有效:
<asp:HiddenField ID="HiddenField1" runat="server" />
<asp:Button Text="Submit" ID="btnSubmit" runat="server"/>
<script type="text/javascript">
document.getElementById('<%= HiddenField1.ClientID %>').value = "some value";
</script>
答案 2 :(得分:0)
你缺少的是JQuery帖子的内容。
Web应用程序是无状态的。
与前面的一些帖子一样,如果没有一些回发事件,在服务器端获取控件的值是不够的。服务器必须知道发生了什么。在客户端代码中,您将获得脚本块中控件的值,但是服务器上没有帖子让它知道客户端代码中发生的内容。您需要了解将表单(或至少数据)发布回服务器,或者如果您希望在没有完整回发的情况下发生这种情况,则需要了解JQuery or Ajax。
如果您需要在没有用户事件的情况下进行此操作,请在document.ready函数中执行此操作。但是,这是多余的,因为您的服务器首先发布了数据,因此没有用户交互(在document.ready中),服务器不会知道任何事情,特别是在隐藏值中。 / p>
答案 3 :(得分:-1)
<form id="form1" runat="server">
<div>
<asp:HiddenField ID="Hidden1" runat="server"/>
<div>
</form>
protected void Page_Load(object sender, EventArgs e)
{
if ( !Page.IsPostBack)
{
Hidden1.Value = "Some Val";
}
else
{
string message =Hidden1.Value;
// remaining code
}
}