我的问题很简单,但我找不到解决它的方法:(
当用户单击特定按钮时,我需要打开一个新的 aspx 页面(在新窗口中),以便他能够选择需要返回到原始页面的内容。 我能够使用 window.open 打开新页面,但是,我无法将所选值设置回原始页面。
总而言之,输入字段需要从打开的页面接收字符串值。我试过 window.opener.getElementById()
,但 ASP.NET 会混淆控件的 ID,因此我无法在运行时确定输入字段的正确 ID。
是否有更简单的方法来仅使用服务器端代码(打开页面并返回值)而不是使用 JavaScript 和 window.opener(在我看来这很糟糕)?
如果没有,也欢迎任何其他简单的解决方案!
最佳答案
如果你使用类似 jquery 的东西, 顺便说一句,强烈建议不要使用基本的 DOM 函数,你可以试试这个:
window.opener.$("[id$=txtValue]").val(valueToSet);
应该执行以下操作:
window.opener.$
如果从opener窗口查询函数- ("[id$=something]") 是一个选择器,它选择所有具有以“txtValue”结尾的“id”属性的元素(这就是解决难看的 Id 问题的原因)。
- .val("some value") 将该输入字段的值设置为“some value”。
我不建议在 javascript 代码中硬编码 asp.net ID。由于某种原因,该 ID 总是在将来的某个时候发生变化,您的页面将会中断。更不用说它很丑了:)
此外,虽然 window.opener 解决方案有其缺点,但在服务器端执行此操作通常会导致更糟糕的事情,例如使用 Session 在页面之间传递数据或在页面(父或子)之间的竞争条件) 先回发。
关于asp.net - 如何在另一个打开的aspx页面中设置控件值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/478202/