【问题标题】:Add value to box and refresh using Javascript. Then get value in code-behind使用 Javascript 为框添加值并刷新。然后在代码隐藏中获取价值
【发布时间】:2014-01-07 23:28:14
【问题描述】:

我有一个带有文本框的 aspx 页面。用户在此页面中打开一个模式窗口以进行搜索并选择一个项目。选择后,该值将传递到 aspx 页面中的文本框,然后刷新。

然后我想做的是在刷新后获取文本框中的值。在我的代码隐藏中,它击中页面加载很好,但值始终是“”而不是其中的文本。

在 JS 刷新该页面后,我该如何获取该值?是否将其添加到页面生命周期的正确部分?

请注意,模态窗口不会通过查询字符串返回值,而是通过设置父级中框的值来实现的:

window.top.document.getElementById('txtCustomerType').value = value;

然后进行刷新:

window.parent.location.reload();

这是我用来测试刷新(页面加载)后的值的代码:

protected void Page_Load(object sender, EventArgs e)
{
     string test;
     test = txtCustomerType.Text;
}

但是 txtcustomertype.text 的值是 "",即使它有一个值。

【问题讨论】:

  • 如果刷新页面,文本框的值肯定会被清除
  • 老实说刷新可能不是最好的选择。我需要将值发送到文本框,然后再进行一次搜索并填充屏幕上唯一的文本框。我只知道如何在代码隐藏中做到这一点,所以我试图点击页面加载并获取价值。事实上,我需要做的就是传回那个值,然后用它来获取其他信息。

标签: c# javascript asp.net webforms code-behind


【解决方案1】:

如果您刷新页面,文本框的值肯定会清晰。

所以我认为您需要使用隐藏字段或删除window.parent.location.reload();

更新

protected void Page_Load(object sender, EventArgs e)
{
     string test;
     test = txtCustomerType.Text;
}

当您重新加载页面时,此时文本框值应该存在,因为它是旧文本框值,但任何未在页面加载中为新加载分配的值。所以文本框在加载事件结束时刷新(重新加载)。

所以你应该需要这种方式

 protected void Page_Load(object sender, EventArgs e)
    {
         string test;
         test = txtCustomerType.Text;
            txtCustomerType.Text=txtCustomerType.Text
    }

在上面的代码中,旧文本框的值将第二次分配。

如果您在文本框中使用 runat 服务器,那么您需要 clientId 来读取 javascript 中的文本框

【讨论】:

  • 但是我如何在代码隐藏中获得该值?它永远不会做这样的回发。
  • 感谢您的回答,但 .text 返回为“”,因此当我将其分配回 txtcustomertype 时,它​​仍然是“”
  • 您是否在页面加载事件中设置了断点?文本框将在多长时间内清除。
  • 我认为您的 javascript 代码显示错误。请运行ie浏览器
  • 我在 IE 和 Chrome 中测试过,JS 工作正常,我确实到了断点,但正如我所说的值是 ""
猜你喜欢
  • 1970-01-01
  • 2011-02-10
  • 2018-05-26
  • 2017-07-07
  • 2014-04-10
  • 1970-01-01
  • 2014-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多