如何在页面加载事件的子页面中获取隐藏字段值

时间:2011-04-08 08:03:32

标签: vb.net webforms hidden-field

我在hdnField的{​​{1}}中有一个值,并打开一个弹出页面form1.aspx。 我希望在页面加载事件{/ 1}}中获得form2.aspx值。

如何在不使用查询字符串,会话变量,cookie的情况下完成此操作?

4 个答案:

答案 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)

根据code happiness

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