在代码隐藏中创建隐藏字段并通过客户端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" %>
代码隐藏从未执行过。