2014-01-24 73 views
2

在我的网站我有两个页面内一个asp.net页面...一个是Assistance.aspx,另一个是Help01.aspx
我想要做的就是打开里面的iFrame第二页这是在此列属于表这是Assistance.aspx页的内表列:
为此我使用下面的代码:
打开一个iframe

<iframe id="iFrame" runat="server" class="tablecolumndiv" > 

在我后面的代码我使用:

Protected WithEvents iFrame As System.Web.UI.HtmlControls.HtmlGenericControl<br/> 
Public frame1 As HtmlControl = CType(Me.FindControl("iFrame"), HtmlControl) 

但是,当我来到了:

Private Sub button1_Click(sender As Object, e As System.EventArgs) Handles button1.Click 
     frame1.Attributes("src") = "/Pages/Support/Asp/Help01.aspx" 
End Sub 

这引发了我的错误:
Object reference not set to an instance of an object.
因为Me.FindControl("iFrame")有什么
值 当我删除消除了错误runat来自元素。 为什么?

*其它信息*

我也用下面的脚本出于同样的原因:

<script type="text/javascript"> 
    function setPage(frame, pName) { 
     document.getElementById(frame).src = pName; 
    } 
</script> 

我称之为从我后面的代码:

Private Sub button1_Click(sender As Object, e As System.EventArgs) Handles button1.Click 
     Dim myNewAsp As New AspNetSqlProvider 
     myNewAsp.InitializeSite(sender, e) 
     Dim url As String = "/Pages/Support/Asp/Help01.aspx" 
     Dim urlURI As String = HttpContext.Current.Request.Url.AbsoluteUri 
     Dim urlPath As String = HttpContext.Current.Request.Url.AbsolutePath 
     Dim myServerName As String = Strings.Left(urlURI, urlURI.Length - urlPath.Length) 
     root_url = myServerName 
     Dim assist As New Assistance 
     Dim frameName As String = "iFrame" 'assistiFrame.ID 
     iPageLoad(frameName, sender, root_url + url) 
End Sub 
Public Sub iPageLoad(FrameId As String, sender As Object, msg As String) 
     Dim cstype As Type = Me.GetType() 
     Dim innerMess As String = msg 
     Dim url As String = HttpContext.Current.Request.Url.AbsoluteUri 
     Dim script As String = "setPage('" + FrameId + "', '" + innerMess + "')" 
     If Not Page.ClientScript.IsStartupScriptRegistered(Me.GetType(), "iPage") Then 
      Page.ClientScript.RegisterStartupScript(cstype, "iPage", script, True) 
     End If 
End Sub 

该脚本也引发了同样的错误。

+0

当您删除runat = server标签时,我认为代码本身不起作用?你也关闭iframe标签吗? –

+0

无代码运行顺利,我不关闭'iFrame' –

+2

你有没有试过'iFrame.Attributes(“SRC”)=“/Pages/Support/Asp/Help01.aspx”'?直接,没有使用FindControl – Satpal

回答

1

最后,我们已经看到了这个问题有两种解决方法,那两种解决方案中的每一个都有它自己的结果。
第一个解决方案是申报这样的内嵌框架:

Protected WithEvents iFrame As System.Web.UI.HtmlControls.HtmlGenericControl 

而在Button_Click处理程序,我们使用:

iFrame.Attributes("src") = "/Pages/Support/Asp/Help01.aspx" 

并在设计视图区域,我们使用:

<iframe id="iFrame" runat="server" class="tablecolumndiv" > 

该解决方案工作正常,并产生出色的结果。
当然我们在附加信息描述的另一种解决方案,但一个需要从设计视图区中的声明删除runat=”server”
选择并选择...。