我在hdnField
的{{1}}中有一个值,并打开一个弹出页面form1.aspx
。
我希望在页面加载事件{/ 1}}中获得form2.aspx
值。
如何在不使用查询字符串,会话变量,cookie的情况下完成此操作?
答案 0 :(得分:2)
如果您使用Server.Transfer,从form1.aspx转到form2.aspx,您可以在Form2.aspx页面上使用以下代码获取form1.aspx上隐藏字段的值。
HiddenField hdnFieldValue = (HiddenField)PreviousPage.Controls[0].FindControl("hdnField");
修改强> 我使用上面的代码,因为我有一个母版页,但如果你不使用母版页,你应该只需要这个。
HiddenField hdnFieldValue = (HiddenField)PreviousPage.FindControl("hdnField");
答案 1 :(得分:1)
在JavaScript中,window.opener对象可用于从子窗口(弹出窗口或类似窗口)访问父窗口中的HTML元素。
让我们考虑两个HTML文件:
openwindow.htm - 它有一个文本框和一个按钮,单击该按钮可在新的浏览器窗口中打开target.htm文件 target.htm - 这个代码可以更改打开此文件的父窗口(openwindow.htm)中存在的文本框的值
openwindow.htm: (parent window)
<html>
<script language="javascript">
function openwindow()
{
window.open("target.htm","_blank","height=200,width=400,
status=yes,toolbar=no,menubar=no,location=no")
}
</script>
<body>
<form name=frm>
<input id=text1 type=text>
<input type=button onclick="javascript:openwindow()" value="Open window..">
</form>
</body>
</html>
如果您不熟悉window.open()方法,那么您会想知道什么是“height = 200,width = 400,status = yes,toolbar = no,menubar = no,location = no”,don不用担心,它只是指定新窗口的大小和外观,这行代码可以更改为window.open(“target.htm”,“_ blank”),如果你改变,只看输出的差异。
请注意,如果未提供参数“_blank”,则IE和Firefox之间的功能会有所不同,在firefox中将打开一个新选项卡而不是新窗口。只需使用window.open(“target.htm”)并自己查看差异。有关window.open()方法及其参数的更多信息,请参阅http://msdn2.microsoft.com/en-us/library/ms536651(VS.85).aspx。另请注意,在id属性中,只需要在Firefox中执行target.htm(如下所示)的代码。
target.htm: (child window)
<html>
<script language="javascript">
function changeparent()
{
window.opener.document.getElementById('text1').value="Value changed.."
}
</script>
<body>
<form>
<input type=button onclick="javascript:changeparent()" value="Change opener's textbox's value..">
</form>
</body>
</html>
希望你能得到上面代码中的内容,在新窗口(target.htm)中我们使用window.opener对象来访问父窗口中的文本框(openwindow.htm)。您只需要在“window.opener。”前加上前缀,并在父窗口的HTML页面中编写相同的代码以访问其元素。
更新了答案
1. Put a hidden field on the child page.
<asp:HiddenField ID="hidChild" runat="server"/>
2. in your javascript function
var childHidden = document.getElementById('<%hidChild.ClientID%>');
childHidden.value = window.opener.document.getElementById('text1').value;
3. Now access this hidden control on the page load event.
Response.Write(hidChild.Value); or Session["ParentVal"] =hidChild.Value;
因此,通过这种方式,您将在子页面加载中拥有父页面值。
答案 2 :(得分:0)
打开弹出窗口时,可以将hdnField的值作为form2.aspx的查询字符串参数传递。
form2.aspx?hdnFieldValue=xxx
答案 3 :(得分:0)
当表单2打开时,您可以将表单1中的字段值存储在会话变量中,然后您可以从会话中访问它。
你可以创建一个基页,其中包含一个使用会话的属性,并使两个页面都可以继承。
例如
public class CustomPage : Page
{
public string YourProperty
{
get
{
if (Session["YourProperty"] == null)
{
Session["YourProperty"] = string.empty;
}
return Session["YourProperty"] as string;
}
set
{
Session["YourProperty"] = value;
}
}
然后从第一页按钮点击。
this.YourProperty = value;
//Open window
第2页。
txtTextBox.Text = this.YourProperty;