ASP.NET(使用VB.NET代码隐藏)框架问题

时间:2011-08-23 17:24:28

标签: javascript asp.net vb.net frames

我正在为我的网络应用程序使用框架。 描述 (1)左框架带有一个按钮列表(单击它们会在右框架中打开一个网页) (2)右框架,打开左框架传递的网页。


问题:按钮单击在生产机器,Windows XP,32位上的Internet Explorer 8.0中完美运行。

按钮点击事件不会在右侧框架中打开任何内容,只是保持不变 Firefox,Chrome,Internet Explorer 9.0


加载框架的初始代码

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="frmMain.aspx.vb" Inherits="XYZ" smartNavigation="True"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"  http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <TITLE>frmMain</</TITLE>
    <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<frameset COLS="20%,80%">
    <frame name="frame1" src="frmbuttons.aspx">
    <frame name="frame2" src="frmbegin.aspx">
</frameset>

示例代码(左框中的按钮):

Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click
Dim url As String = String.Empty
url = "test.aspx"
Dim frameScript As String = "<script language='javascript'>" & "window.parent.frames(1).location='" & url & "';</script>"

ScriptManager.RegisterStartupScript(Me.Page, Me.Page.GetType, "FrameScript", frameScript, False)
end sub

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。此代码导致错误:

Dim frameScript As String = "window.parent.frames(1).location='" & url & "'"

由于括号window.parent.frames(1),上述行在()中有错误;这个问题的正确解决方案是:

此代码是正确的:

Dim frameScript As String = "window.parent.frames[1].location='" & url & "'"

VB.Net使用括号进行数组索引访问,但Javascript使用方括号。一旦我改为正确的语法,代码在所有浏览器中都能正常工作。

答案 1 :(得分:0)

你试过了吗?

Dim frameScript As String = "window.parent.frames(1).location='" & url & "'"
ScriptManager.RegisterStartupScript(Me.Page, Me.Page.GetType, "FrameScript", frameScript, False)

根据我使用ScriptManager的经验,我从来不需要这些标签,它总是在IE,Chrome和FF中工作。