使用C#声明HiddenField';s值&;Javascript变量

使用C#声明HiddenField';s值&;Javascript变量,c#,javascript,asp.net,drop-down-menu,hiddenfield,C#,Javascript,Asp.net,Drop Down Menu,Hiddenfield,我需要将dropdownlist'dropCallbackReason'的'text value'声明到的'ValueHiddenField'ID中,这样我就可以将其用作javascript变量 我需要能够通过C#声明HiddenField,以及通过C#声明Javascript变量'callBackReason',有没有办法通过C#实现这一点 .cs页 protected void Page_Load(object sender, EventArgs e) { Hidde

我需要将dropdownlist'dropCallbackReason'的'text value'声明到的'ValueHiddenField'ID中,这样我就可以将其用作javascript变量

我需要能够通过C#声明HiddenField,以及通过C#声明Javascript变量'callBackReason',有没有办法通过C#实现这一点

.cs页

protected void Page_Load(object sender, EventArgs e)
    {
        HiddenField hiddenField = new HiddenField { ID = "ValueHiddenField", Value = "test" };
        theForm.Controls.Add(hiddenField);
        string script = @"function updateCallBackReason() {
                callBackReason = document.getElementById('<%=ValueHiddenField.ClientID %>').value;
                return callBackReason;
            }";
        this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "callBackReasonScript", script, true);
受保护的无效页面加载(对象发送方,事件参数e)
{
HiddenField HiddenField=新的HiddenField{ID=“ValueHiddenField”,Value=“test”};
form.Controls.Add(hiddenField);
字符串脚本=@“函数updateCallBackReason(){
callBackReason=document.getElementById(“”).value;
返回回调原因;
}";
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(),“callBackReasonScript”,script,true);
.aspx

回调原因:

以下是如何以编程方式添加
隐藏字段
控件。请注意,控件不能添加到
页面中。控件
直接-它们应该放在一些容器中,如
内容占位符
面板

HiddenField hiddenField = new HiddenField {ID = "ValueHiddenField", Value = "test"};
SomePanel.Controls.Add(hiddenField);
下面是如何注册脚本块:

string script = @"function updateCallBackReason() {
                    callBackReason = document.getElementById('<%=ValueHiddenField.ClientID %>').value;
                    return callBackReason;
                }";
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "callBackReasonScript", script, true);
string script=@“函数updateCallBackReason(){
callBackReason=document.getElementById(“”).value;
返回回调原因;
}";
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(),“callBackReasonScript”,script,true);

这样做的好地方是
Page\u Load
Page\u PreRender

,所以你的问题是如何通过代码隐藏而不是声明性方式来完成?是的,Andrei,如果我说得太多,我很抱歉。非常感谢。我似乎收到了“System.Web.HttpException”的编译错误:在数据绑定期间无法修改控件集合d、 初始化、加载、预渲染或卸载阶段。“浏览一下网页,我似乎不太明白为什么?”wilsonlego进行了几次编辑以澄清答案。请查看更新。谢谢,它在“SomePanel.Controls.Add(hiddenField)”上出现了一个错误因为SomePanel不存在?我应该使用“SomePanel”吗?@wilsonlego,当然。
SomePanel
这里只是页面上声明的控件的一个示例。它可以是任何东西。如果你使用的是内容占位符,你可以在这里使用其中一个。抱歉。根据我使用的占位符,我会得到#“不允许子控件。”B#找到多个具有相同ID“ValueHiddenField”的控件。FindControl要求控件具有唯一ID。但我知道我只使用该ID一次。嗯
string script = @"function updateCallBackReason() {
                    callBackReason = document.getElementById('<%=ValueHiddenField.ClientID %>').value;
                    return callBackReason;
                }";
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "callBackReasonScript", script, true);