在代码隐藏中创建隐藏字段并通过客户端javascript访问它

我想以编程方式将一个隐藏字段添加到asp.net页面,通过javascript读取和更改它。 到目前为止,我的代码无法读取添加的隐藏字段。

这是一个简单的例子:Default.aspx:

      function myFunction() { var testVar = document.getElementById("myHiddenField1").value; //works: field defined in aspx page var testVar2 = document.getElementById("myHiddenField2").value; //fails, Object required: field defined in codebehind alert(testVar); }    

Default.aspx.cs(包括ommited):

 public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //Page.RegisterHiddenField( "myHiddenField2", "bla!" ); doesnt work either Page.ClientScript.RegisterHiddenField( "myHiddenField2", "bla" ); } } 

[编辑]

我收到的错误是:Microsoft JScript运行时错误:需要对象。 如果我添加一个警报(testVar2)并忽略该错误消息框显示“未定义”。

[/编辑]

[EDIT2]

[删除编辑,因为我错了]

[/ EDIT2]

提出我的问题:如何在代码隐藏中创建隐藏字段,以便我可以从javascript获取并设置它?

你可以尝试这样的事情:

 protected void Page_Load(object sender, EventArgs e) { HtmlInputHidden hidden2 = new HtmlInputHidden(); hidden2.ID = "Here you will put the id of the control"; hidden2.Value = "Here you will put your value"; this.Controls.Add(hidden2); } 

在源代码文件的顶部,您必须添加以下语句:

 using System.Web.UI.HtmlControls; 

主要问题是aspx页面中缺少以下行:

 <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %> 

代码隐藏从未执行过。