如何使用c#从iframe访问父元素?

时间:2012-11-21 11:44:57

标签: c# asp.net iframe

我正在asp.Net的网站上工作,我正在使用iframe加载单独的网页。 名为Districting.aspx的单独页面包含asp buttononClick()调用c#中的函数,名为DoneClicked()。 这是asp按钮控件:

<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 个答案:

答案 0 :(得分:3)

尝试下面为我工作

在代码背后

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

答案 1 :(得分:1)

您无法直接访问它(至少不是以合理的方式)。

你应该将Default.aspx中的公共代码抽象出一个可以被两个页面使用的类。

答案 2 :(得分:0)

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

因此,您可以在默认页面上创建一个隐藏按钮,该按钮可以将DoneClicked功能调用为:

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

在加载了iframe的{​​{1}}内,您可以点击按钮使用javascript调用“DoneClicked”:

Districting.aspx

请注意<script type="text/javascript"> window.parent.document.getElementById('Done').click(); <script> ,因为从其他页面您无法知道渲染ID是什么,所以请保持静态。如果你不使用具有静态id的dot net 4,那么你还需要使用javascript将呈现的id发送到页面,或者以其他方式找到按钮。

另请注意{ifer>可以从iframe中看到包含iframe的页面控件的DOM结构的ClientIDMode="Static"