在代码背后创建一个隐藏字段,并通过客户端javascript访问它
本文关键字:过客 客户端 访问 javascript 字段 隐藏 创建 背后 代码 一个 | 更新日期: 2023-09-27 18:11:10
我想以编程方式添加一个隐藏字段到asp.net页面,通过javascript读取和更改它。到目前为止,我的代码无法读取添加的隐藏字段。
下面是一个简单的例子:即:
<!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(包括已提交):
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 runtime error: Object required。如果我添加一个警告(testVar2)并忽略错误,则消息框显示"undefined"。
(/编辑)[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" %>
隐藏代码从未执行。