C# 在codebehind中创建隐藏字段并通过客户端javascript访问它
我想以编程方式向asp.net页面添加一个隐藏字段,通过javascript读取并更改它。到目前为止,我的代码无法读取添加的隐藏字段 下面是一个简单的例子: Default.aspx:C# 在codebehind中创建隐藏字段并通过客户端javascript访问它,c#,asp.net,c#-4.0,C#,Asp.net,C# 4.0,我想以编程方式向asp.net页面添加一个隐藏字段,通过javascript读取并更改它。到目前为止,我的代码无法读取添加的隐藏字段 下面是一个简单的例子: Default.aspx: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
<input type="hidden" id="myHiddenField1" value="blub" runat="server" />
<button onclick="myFunction()">click me</button>
<script>
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);
}
</script>
</body>
</html>
[编辑]
我收到的错误是:Microsoft JScript运行时错误:需要对象。如果添加警报(testVar2)并忽略错误,消息框将显示“undefined”
[/edit]
[edit2]
[删除编辑,因为我错了]
[/edit2]
总结一下我的问题:如何在codebehind中创建一个隐藏字段,以便从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" %>
codebehind从未执行过。您的代码可以运行,请尝试
警报(testVar2)
@Nalaka526:不幸的是,它不能运行。我收到一个错误:Microsoft JScript运行时错误:Object required,这表明找不到隐藏字段。是否尝试了发布的代码,但出现了此错误?是。我试过你的代码。将myFunction代码更改为:var testVar2=document.getElementById(“Hidden2”).value;警报(testVar2);。同样的错误。请稍等,因为我可能会发现错误。谢谢你的耐心。似乎没有效果。我还是会犯同样的错误,让我们一起来。
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>