【问题标题】:Use C# to declare HiddenField's value & Javascript Variable使用 C# 将隐藏字段值声明为 Javascript 变量
【发布时间】:2013-06-11 13:39:24
【问题描述】:

我需要将下拉列表“dropCallbackReason”的“文本值”声明到 '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);

.aspx

<asp:label runat="server" ID="lblCallbackReason" AssociatedControlID="dropCallbackReason" CssClass="textLabel">Reason for callback:</asp:label>
            <asp:DropDownList runat="server" ID="dropCallbackReason" onChange="updateCallBackReason" ClientIDMode="Static" >
                <asp:ListItem Text="-- Select Reason --" Value="1"></asp:ListItem>
                <asp:ListItem Text="Booking a Test Drive" Value="6"></asp:ListItem>
                <asp:ListItem Text="Discussing a Purchase" Value="11"></asp:ListItem>
                <asp:ListItem Text="Contract Hire Quotation" Value="45"></asp:ListItem>
            </asp:DropDownList>

【问题讨论】:

  • 那么你的问题是如何通过代码隐藏而不是声明方式来做到这一点?
  • 是的安德烈,对不起,如果我胡扯了。

标签: c# javascript asp.net drop-down-menu hiddenfield


【解决方案1】:

以下是如何以编程方式添加HiddenField 控件。请注意,控件不能直接添加到 Page.Controls 中 - 它们应该放在某个容器中,例如 ContentPlaceholderPanel

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);

这样做的好地方是Page_LoadPage_PreRender

【讨论】:

  • 非常感谢。我似乎收到“System.Web.HttpException:无法在 DataBind、Init、Load、PreRender 或 Unload 阶段修改控件集合”的编译错误。浏览一下网络,我似乎无法找到太多原因?
  • @wilsonlego,进行了一些编辑以澄清答案。请查看更新。
  • 谢谢,它在 'SomePanel.Controls.Add(hiddenField);' 上返回错误因为 SomePanel 不存在?我应该使用“SomePanel”吗?问候,
  • @wilsonlego,当然。 SomePanel 这里只是一个在页面上声明的控件的例子。它可以是任何东西。例如,如果您使用内容占位符,则可以在此处使用其中之一。
  • 道歉。好吧,取决于我使用的占位符,我得到 A#“不允许子控件”。 B#找到具有相同 ID 'ValueHiddenField' 的多个控件。 FindControl 要求控件具有唯一的 ID。但我知道我只使用过该 ID 一次。嗯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
  • 2021-11-16
  • 2012-02-18
  • 1970-01-01
  • 2021-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多