【问题标题】:Accessing hidden-input values edited by JavaScript访问由 JavaScript 编辑的隐藏输入值
【发布时间】:2009-07-21 15:49:26
【问题描述】:

我在 C# 代码隐藏文件中动态创建了隐藏的输入控件,然后用 JavaScript 填充了它们的值。我现在想在 C# 中访问这些变量。

Firebug 显示这些值确实会随着 JavaScript 发生变化,但我在后面的代码中恢复了原始值。任何见解将不胜感激。

JavaScript:

function injectVariables(){
    var hidden = document.getElementById("point1");
    hidden.value = 55;
    var hidden2 = document.getElementById("point2");
    hidden2.value = 55;
    var hidden3 = document.getElementById("point3");
    hidden3.value = 55;
    alert("values changed");
}

ASPX:

<asp:Button OnClick="Update_PlanRisks" OnClientClick="injectVariables()" Text="updatePlanRisks" runat="server" />

C#:

protected override void CreateChildControls()
{
    base.CreateChildControls();
    int planId = Convert.ToInt32(Request.QueryString.Get("plan"));
    planRisks = wsAccess.GetPlanRiskByPlanId(planId);

    foreach (PlanRisk pr in planRisks)
    {
        HtmlInputHidden hiddenField = new HtmlInputHidden();
        hiddenField.ID= "point" + pr.Id;
        hiddenField.Name = "point" + pr.Id;
        hiddenField.Value = Convert.ToString(pr.Severity);
        this.Controls.Add(hiddenField);
    }   
}

protected void Update_PlanRisks(object sender, EventArgs e)
{
    foreach (PlanRisk pr in planRisks)
    {
        int planRiskId = pr.Id;
        string planRiskName = "point" + pr.Id;
        HtmlInputHidden hiddenControl = (HtmlInputHidden) FindControl(planRiskName);
        string val = hiddenControl.Value;
    }
}

【问题讨论】:

    标签: c# .net asp.net javascript dynamic-controls


    【解决方案1】:

    这是从请求中获取值的一种方式...

    string point1 = Request.Form["point1"];
    

    【讨论】:

      【解决方案2】:

      在 CreateChildControls 中,您明确设置隐藏字段的值。 CreateChildControls 在页面生命周期中每次运行(可能多次),当您单击提交时,页面会回发并再次运行整个生命周期 - 包括 CreateChildControls - 在运行点击处理程序 Update_PlanRisks 之前。

      避免此问题的最简单方法是在设置隐藏字段的值之前检查您是否处于 PostBack 中:

      if(!IsPostBack)
      {
          hiddenField.Value = Convert.ToString(pr.Severity);
      }
      

      【讨论】:

      • 当我添加 (!IsPostBack){} 我的字符串 val = ""。我怎样才能让它访问注入的 javascript 值?
      猜你喜欢
      • 2011-05-21
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-07
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多