2012-11-21 40 views
6

我在asp.Net的网站上工作,我正在使用iframe加载单独的页面。 单独的页面名为Districting.aspx,包含一个asp button,其中onClick()调用c#中的函数,名为DoneClicked()。 这是ASP按钮控制:如何使用c#访问iframe中的父元素?

<asp:Button ID="LinkButtonDone" CssClass="button button-yellow" runat="server" OnClick="DoneClicked" Text="Done" /> 

在后面的代码中,DoneClicked功能:

protected void Doneclicked(object sender, EventArgs e) 
    { 
     // Some code here 
     // Calling a function from Default page 
    } 

我需要做的是在DoneClicked功能,从Default.aspx页面功能的端部应叫做。

那么如何在iframe页面代码后面从Default.aspx.cs访问函数呢?

谢谢:)

回答

3

试试下面这为我工作

代码

protected void Doneclicked(object sender, EventArgs e) 
    { 
     ScriptManager.RegisterStartupScript(this, this.GetType(), "scriptid", "window.parent.location.href='ParentPageName.aspx';", true); 
} 
+0

背后,谢谢!!你帮了很多:) – Hanady

+0

@ Aristos/@ Divya Rana/@ Hanady:请你解释一下上述解决方案是如何从Default.aspx.cs文件(Parent page) –

+0

@ C.M.W中调用方法的。你实际上不调用一个方法,你只需在页面渲染器上写一些JavaScript代码来调用它,或者运行你期望的。 – Aristos

1

您无法直接访问它(至少不是一个明智的方式)。

您应该将Default.aspx中的通用代码抽象为某个可以被这两个页面使用的类。

0

你不能直接这样做,但你可以使用javascript间接做到这一点。

所以你做的默认页面上的隐藏按钮可以调用DoneClicked功能:

<div style="display:none"> 
    <asp:Button ID="Done" runat="server" ClientIDMode="Static" OnClick="DoneClicked " /> 
</div> 

,并在那里Districting.aspx加载iframe里面,你可以用点击按钮来调用“DoneClicked” JavaScript作为:

<script type="text/javascript"> 
    window.parent.document.getElementById('Done').click(); 
<script> 

注意,ClientIDMode="Static"因为从其他的页面,您可以不知道什么是渲染的id,所以保持静止。如果你不使用带有静态id的dot net 4,那么你还需要使用javascript将渲染后的id发送到页面,或者通过其他方式来定位按钮。

另请注意,window.parent.可以从iframe中“可以看到”包含iframe的页面控件的DOM结构。