我想以编程方式将一个隐藏字段添加到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.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>
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)并忽略该错误,则消息框显示&#34; undefined&#34;。
[/编辑]
[EDIT2]
[删除编辑,因为我错了]
[/ EDIT2]
提出我的问题:如何在代码隐藏中创建隐藏字段,以便我可以从javascript获取并设置它?
答案 0 :(得分:3)
您可以尝试这样的事情:
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;
答案 1 :(得分:0)
主要问题是aspx页面中缺少以下行:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
代码隐藏从未执行过。