在后面的代码中创建隐藏字段并通过客户端javascript访问它

时间:2014-07-02 08:47:46

标签: 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.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获取并设置它?

2 个答案:

答案 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" %>

代码隐藏从未执行过。