ASP .net从page_load函数中的代码中获取隐藏值

时间:2014-02-13 15:14:59

标签: c# javascript asp.net hidden-field

我在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中获取隐藏值?

感谢。

4 个答案:

答案 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
        }
 }