在代码背后创建一个隐藏字段,并通过客户端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获得和设置它?

在代码背后创建一个隐藏字段,并通过客户端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" %>

隐藏代码从未执行。