1

我将 VS 2003 应用程序迁移到 VS 2010。该应用程序具有在 default.aspx 中引用的 side_menu.ascx。在 side_menu.ascx 中,调用了一个存在于 side_menu.js 中的 javascript 函数菜单。

但是,当调用功能菜单时,它会在运行时出错 - '找不到功能菜单'这在 VS 2003 中工作正常

这是我收到此错误的地方-此代码位于 side_menu.ascx

 new menu (SIDE_MENU_ITEMS, SIDE_MENU_POS, SIDE_MENU_STYLES)

这是 default.aspx 中的代码

                    <!-- Side Menu -->
     <td valign="top" class="page_side_menu">
        <mycontrols:sidemenu id="SideMenu1" runat="server"/>
        </td>

这是 side_menu.ascx 中的代码

<%@ Control Language="vb" AutoEventWireup="false" Codebehind="side_menu.ascx.vb" Inherits="TOrders.UI.Controls.SideMenu" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<table cellPadding="0" width="100%">
<tr>
    <td vAlign="top" align="left" width="100%">
        <table cellSpacing="10" cellPadding="0" width="100%">
            <tr>
                <td align="left">
                    <asp:Literal ID="litError" Runat="server" Text="<font color=#E0E0E0 size=1>*&nbsp;</font>" Visible="False"></asp:Literal><asp:label id="lblJump" runat="server" ForeColor="#E0E0E0" Font-Size="XX-Small">Jump to Telex/Order:</asp:label>
                    <br>
                    <asp:textbox id="txtJumpTo" runat="server" Width="125px" CssClass="textbox"></asp:textbox>&nbsp;<input type="button" value="Go" runat="server" id="btnGo" class="TabOut-Button">
                </td>
            </tr>
        </table>
    </td>
</tr>
</table>
<script language="JavaScript" src="~/library/scripts/side_menu.js"     type="text/javascript"></script>
<script language="JavaScript" src="~/library/scripts/side_menu_items.js" type="text/javascript"></script>
<script language="JavaScript" src="~/library/scripts/side_menu_tpl.js" type="text/javascript"></script>
<script language="JavaScript" type="text/javascript">
<!--
new menu (SIDE_MENU_ITEMS, SIDE_MENU_POS, SIDE_MENU_STYLES);
// -->
</script>

这是javascript函数side_menu.js

var menus = [];

function menu (item_struct, pos, styles) {
// browser check
this.item_struct = item_struct;
this.pos = pos;
this.styles = styles;
this.id = menus.length;
this.items = [];
this.children = [];

this.add_item = menu_add_item;
this.hide = menu_hide;

this.onclick = menu_onclick;
this.onmouseout = menu_onmouseout;
this.onmouseover = menu_onmouseover;
this.onmousedown = menu_onmousedown;

var i;
for (i = 0; i < this.item_struct.length; i++)
    new menu_item(i, this, this);
for (i = 0; i < this.children.length; i++)
    this.children[i].visibility(true);
menus[this.id] = this;
}
4

4 回答 4

0

尝试从 javascript src 路径中删除波浪号 (~) 并确保路径实际上是正确的

于 2012-07-17T16:16:15.750 回答
0

对我来说是一样的,所以解决方案是:更改相对路径并让它们带走根〜/

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="wucDTmisc1.ascx.vb"      Inherits="wucDTmisc1" %>
<%@ Register Src="wucBeneficiarios.ascx" TagName="wucBeneficiarios" TagPrefix="uc1" %>
<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
<%@ Register Src="Controles/wucMoneda.ascx" TagName="wucMoneda" TagPrefix="uc1" %>
<link href="~/css/content.css" rel="stylesheet" type="text/css" />
<link href="~/css/Blue.css" rel="stylesheet" type="text/css" />
<script src="~/js/siscli.js" type="text/javascript"></script>
<script src="~/js/json2.js" type="text/javascript"></script>
<script src="~/js/date.js" type="text/javascript"></script>

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="wucDTmisc1.ascx.vb"      Inherits="wucDTmisc1" %>
<%@ Register Src="wucBeneficiarios.ascx" TagName="wucBeneficiarios" TagPrefix="uc1" %>
<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
<%@ Register Src="Controles/wucMoneda.ascx" TagName="wucMoneda" TagPrefix="uc1" %>
<link href="/css/content.css" rel="stylesheet" type="text/css" />
<link href="/css/Blue.css" rel="stylesheet" type="text/css" />
<script src="/js/siscli.js" type="text/javascript"></script>
<script src="/js/json2.js" type="text/javascript"></script>
<script src="/js/date.js" type="text/javascript"></script>

同样在寻找解决方案时,我意识到在控件中最好保留 JS 代码。

它对我有用,我希望你也一样。

于 2012-07-17T16:24:37.613 回答
0

你需要的可能是这里解释的东西。您必须将“~”替换为跟随用户控件的东西,即他现在所在的位置,而不是他在应用程序中实际登陆的位置。

<script language="javascript" type="text/javascript" src="<%=Page.ResolveUrl("~/JS/VerticalMenu.js")%>"></script>
<script language="javascript" type="text/javascript" src="<%=Page.ResolveUrl("~/library/scripts/side_menu_items.js")%>"></script>
<script language="javascript" type="text/javascript" src="<%=Page.ResolveUrl("~/library/scripts/side_menu_tpl.js")%>"></script>
于 2012-07-17T17:32:10.793 回答
0

解决

我终于找到了解决问题的方法。它带有脚本标签

我把它改写为

<script src="../library/scripts/side_menu.js" type="text/javascript" />

代替

<script src="../library/scripts/side_menu.js" type="text/javascript"></script>
于 2012-07-19T13:54:37.630 回答